;--- include file created by h2incx v0.99.19 (copyright 2005-2006 japheth)
;--- source file: D:\MICROS~1\Include\mmsystem.h, last modified: 5/2/2001 13:4
;--- cmdline used for creation:  -d3 -i mshtml.h

ifndef _INC_MMSYSTEM
_INC_MMSYSTEM	EQU	<>
ifdef _WIN32
	include pshpack1.inc
else 
ifndef RC_INVOKED
;#pragma pack ( 1 ) 
endif 
endif 
ifdef __cplusplus
;extern "C"
;{
endif 
ifdef _WIN32
ifndef _WINMM_
WINMMAPI	EQU	<DECLSPEC_IMPORT>
else 
WINMMAPI	EQU	<>
endif 
_loadds	EQU	<>
_huge	EQU	<>
else 
WINMMAPI	EQU	<>
endif 
ifdef _MAC
	include macwin32.inc
endif 
MAXPNAMELEN	EQU	32
MAXERRORLENGTH	EQU	256
MAX_JOYSTICKOEMVXDNAME	EQU	260
if (WINVER le 0400h)
ifndef MM_MICROSOFT
MM_MICROSOFT	EQU	1
endif 
ifndef MM_MIDI_MAPPER
MM_MIDI_MAPPER	EQU	1
MM_WAVE_MAPPER	EQU	2
MM_SNDBLST_MIDIOUT	EQU	3
MM_SNDBLST_MIDIIN	EQU	4
MM_SNDBLST_SYNTH	EQU	5
MM_SNDBLST_WAVEOUT	EQU	6
MM_SNDBLST_WAVEIN	EQU	7
MM_ADLIB	EQU	9
MM_MPU401_MIDIOUT	EQU	10
MM_MPU401_MIDIIN	EQU	11
MM_PC_JOYSTICK	EQU	12
endif 
endif 
ifdef _WIN32
MMVERSION typedef DWORD
else 
VERSION typedef DWORD
endif 
MMRESULT typedef DWORD
_MMRESULT_	EQU	<>
LPUINT typedef ptr DWORD
MMTIME	struct 
wType	DWORD	?
union u
ms	DWORD	?
sample	DWORD	?
cb	DWORD	?
ticks	DWORD	?
struct smpte
hour	BYTE	?
min	BYTE	?
sec	BYTE	?
frame_	BYTE	?
fps	BYTE	?
dummy	BYTE	?
ifdef _WIN32
pad	BYTE 2 dup (?)
endif 
ends
struct midi
songptrpos	DWORD	?
ends
ends
MMTIME	ends

PMMTIME typedef ptr MMTIME
NPMMTIME typedef ptr MMTIME
LPMMTIME typedef ptr MMTIME

TIME_MS	EQU	0001h
TIME_SAMPLES	EQU	0002h
TIME_BYTES	EQU	0004h
TIME_SMPTE	EQU	0008h
TIME_MIDI	EQU	0010h
TIME_TICKS	EQU	0020h
MAKEFOURCC macro ch0,ch1,ch2,ch3
	exitm <( ( ch0 )  or  ( ( ch1 )  shl  8 )  or  ( ( ch2 )  shl  16 )  or  ( ( ch3 )  shl  24 ) ) >
	endm
MM_JOY1MOVE	EQU	3A0h
MM_JOY2MOVE	EQU	3A1h
MM_JOY1ZMOVE	EQU	3A2h
MM_JOY2ZMOVE	EQU	3A3h
MM_JOY1BUTTONDOWN	EQU	3B5h
MM_JOY2BUTTONDOWN	EQU	3B6h
MM_JOY1BUTTONUP	EQU	3B7h
MM_JOY2BUTTONUP	EQU	3B8h
MM_MCINOTIFY	EQU	3B9h
MM_WOM_OPEN	EQU	3BBh
MM_WOM_CLOSE	EQU	3BCh
MM_WOM_DONE	EQU	3BDh
MM_WIM_OPEN	EQU	3BEh
MM_WIM_CLOSE	EQU	3BFh
MM_WIM_DATA	EQU	3C0h
MM_MIM_OPEN	EQU	3C1h
MM_MIM_CLOSE	EQU	3C2h
MM_MIM_DATA	EQU	3C3h
MM_MIM_LONGDATA	EQU	3C4h
MM_MIM_ERROR	EQU	3C5h
MM_MIM_LONGERROR	EQU	3C6h
MM_MOM_OPEN	EQU	3C7h
MM_MOM_CLOSE	EQU	3C8h
MM_MOM_DONE	EQU	3C9h
ifndef MM_DRVM_OPEN
MM_DRVM_OPEN	EQU	3D0h
MM_DRVM_CLOSE	EQU	3D1h
MM_DRVM_DATA	EQU	3D2h
MM_DRVM_ERROR	EQU	3D3h
endif 
MM_STREAM_OPEN	EQU	3D4h
MM_STREAM_CLOSE	EQU	3D5h
MM_STREAM_DONE	EQU	3D6h
MM_STREAM_ERROR	EQU	3D7h
if (WINVER ge 0400h)
MM_MOM_POSITIONCB	EQU	3CAh
ifndef MM_MCISIGNAL
MM_MCISIGNAL	EQU	3CBh
endif 
MM_MIM_MOREDATA	EQU	3CCh
endif 
MM_MIXM_LINE_CHANGE	EQU	3D0h
MM_MIXM_CONTROL_CHANGE	EQU	3D1h
MMSYSERR_BASE	EQU	0
WAVERR_BASE	EQU	32
MIDIERR_BASE	EQU	64
TIMERR_BASE	EQU	96
JOYERR_BASE	EQU	160
MCIERR_BASE	EQU	256
MIXERR_BASE	EQU	1024
MCI_STRING_OFFSET	EQU	512
MCI_VD_OFFSET	EQU	1024
MCI_CD_OFFSET	EQU	1088
MCI_WAVE_OFFSET	EQU	1152
MCI_SEQ_OFFSET	EQU	1216
MMSYSERR_NOERROR	EQU	0
MMSYSERR_ERROR	EQU	( MMSYSERR_BASE + 1 )
MMSYSERR_BADDEVICEID	EQU	( MMSYSERR_BASE + 2 )
MMSYSERR_NOTENABLED	EQU	( MMSYSERR_BASE + 3 )
MMSYSERR_ALLOCATED	EQU	( MMSYSERR_BASE + 4 )
MMSYSERR_INVALHANDLE	EQU	( MMSYSERR_BASE + 5 )
MMSYSERR_NODRIVER	EQU	( MMSYSERR_BASE + 6 )
MMSYSERR_NOMEM	EQU	( MMSYSERR_BASE + 7 )
MMSYSERR_NOTSUPPORTED	EQU	( MMSYSERR_BASE + 8 )
MMSYSERR_BADERRNUM	EQU	( MMSYSERR_BASE + 9 )
MMSYSERR_INVALFLAG	EQU	( MMSYSERR_BASE + 10 )
MMSYSERR_INVALPARAM	EQU	( MMSYSERR_BASE + 11 )
MMSYSERR_HANDLEBUSY	EQU	( MMSYSERR_BASE + 12 )
MMSYSERR_INVALIDALIAS	EQU	( MMSYSERR_BASE + 13 )
MMSYSERR_BADDB	EQU	( MMSYSERR_BASE + 14 )
MMSYSERR_KEYNOTFOUND	EQU	( MMSYSERR_BASE + 15 )
MMSYSERR_READERROR	EQU	( MMSYSERR_BASE + 16 )
MMSYSERR_WRITEERROR	EQU	( MMSYSERR_BASE + 17 )
MMSYSERR_DELETEERROR	EQU	( MMSYSERR_BASE + 18 )
MMSYSERR_VALNOTFOUND	EQU	( MMSYSERR_BASE + 19 )
MMSYSERR_NODRIVERCB	EQU	( MMSYSERR_BASE + 20 )
MMSYSERR_MOREDATA	EQU	( MMSYSERR_BASE + 21 )
MMSYSERR_LASTERROR	EQU	( MMSYSERR_BASE + 21 )
if (WINVER lt 030ah) OR defined(_WIN32) or defined(_WIN64)
DECLARE_HANDLE( HDRVR)
endif 
ifndef MMNODRV
ifdef _WIN32
DRVCONFIGINFOEX	struct 
dwDCISize	DWORD	?
lpszDCISectionName	LPWSTR	?
lpszDCIAliasName	LPWSTR	?
dnDevNode	DWORD	?
DRVCONFIGINFOEX	ends

PDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX
NPDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX
LPDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX

else 
DRVCONFIGINFOEX	struct 
dwDCISize	DWORD	?
lpszDCISectionName	LPSTR	?
lpszDCIAliasName	LPSTR	?
dnDevNode	DWORD	?
DRVCONFIGINFOEX	ends

PDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX
NPDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX
LPDRVCONFIGINFOEX typedef ptr DRVCONFIGINFOEX

endif 
if (WINVER lt 030ah) OR defined(_WIN32)
ifndef DRV_LOAD
DRV_LOAD	EQU	0001h
DRV_ENABLE	EQU	0002h
DRV_OPEN	EQU	0003h
DRV_CLOSE	EQU	0004h
DRV_DISABLE	EQU	0005h
DRV_FREE	EQU	0006h
DRV_CONFIGURE	EQU	0007h
DRV_QUERYCONFIGURE	EQU	0008h
DRV_INSTALL	EQU	0009h
DRV_REMOVE	EQU	000Ah
DRV_EXITSESSION	EQU	000Bh
DRV_POWER	EQU	000Fh
DRV_RESERVED	EQU	0800h
DRV_USER	EQU	4000h
ifdef _WIN32
DRVCONFIGINFO	struct 
dwDCISize	DWORD	?
lpszDCISectionName	LPWSTR	?
lpszDCIAliasName	LPWSTR	?
DRVCONFIGINFO	ends

PDRVCONFIGINFO typedef ptr DRVCONFIGINFO
NPDRVCONFIGINFO typedef ptr DRVCONFIGINFO
LPDRVCONFIGINFO typedef ptr DRVCONFIGINFO

else 
DRVCONFIGINFO	struct 
dwDCISize	DWORD	?
lpszDCISectionName	LPSTR	?
lpszDCIAliasName	LPSTR	?
DRVCONFIGINFO	ends

PDRVCONFIGINFO typedef ptr DRVCONFIGINFO
NPDRVCONFIGINFO typedef ptr DRVCONFIGINFO
LPDRVCONFIGINFO typedef ptr DRVCONFIGINFO

endif 
DRVCNF_CANCEL	EQU	0000h
DRVCNF_OK	EQU	0001h
DRVCNF_RESTART	EQU	0002h
if defined(_WIN32) or defined(_WIN64)
proto_DRIVERPROC typedef proto WINSTDCALLCONV :DWORD_PTR,:HDRVR,:DWORD,:LPARAM,:LPARAM
DRIVERPROC typedef ptr proto_DRIVERPROC
@DefProto WINMMAPI, CloseDriver, stdcall, , <:HDRVR, :LPARAM, :LPARAM>, 12
@DefProto WINMMAPI, OpenDriver, stdcall, , <:LPWSTR, :LPWSTR, :LPARAM>, 12
@DefProto WINMMAPI, SendDriverMessage, stdcall, , <:HDRVR, :DWORD, :LPARAM, :LPARAM>, 16
@DefProto WINMMAPI, DrvGetModuleHandle, stdcall, , <:HDRVR>, 4
@DefProto WINMMAPI, GetDriverModuleHandle, stdcall, , <:HDRVR>, 4
@DefProto WINMMAPI, DefDriverProc, stdcall, , <:DWORD_PTR, :HDRVR, :DWORD, :LPARAM, :LPARAM>, 20
else 
DrvClose proto WINSTDCALLCONV :HDRVR, :LPARAM, :LPARAM
DrvOpen proto WINSTDCALLCONV :LPSTR, :LPSTR, :LPARAM
DrvSendMessage proto WINSTDCALLCONV :HDRVR, :DWORD, :LPARAM, :LPARAM
DrvGetModuleHandle proto WINSTDCALLCONV :HDRVR
DrvDefDriverProc proto WINSTDCALLCONV :DWORD, :HDRVR, :DWORD, :LPARAM, :LPARAM
DefDriverProc	EQU	<DrvDefDriverProc>
endif 
endif 
endif 
if (WINVER ge 030ah)
DRV_CANCEL	EQU	<DRVCNF_CANCEL>
DRV_OK	EQU	<DRVCNF_OK>
DRV_RESTART	EQU	<DRVCNF_RESTART>
endif 
DRV_MCI_FIRST	EQU	<DRV_RESERVED>
DRV_MCI_LAST	EQU	( DRV_RESERVED + 0FFFh )
endif 
CALLBACK_TYPEMASK	EQU	00070000h
CALLBACK_NULL	EQU	00000000h
CALLBACK_WINDOW	EQU	00010000h
CALLBACK_TASK	EQU	00020000h
CALLBACK_FUNCTION	EQU	00030000h
ifdef _WIN32
CALLBACK_THREAD	EQU	<( CALLBACK_TASK )>
CALLBACK_EVENT	EQU	00050000h
endif 
proto_DRVCALLBACK typedef proto WINSTDCALLCONV :HDRVR,:DWORD,:DWORD_PTR,:DWORD_PTR,:DWORD_PTR
DRVCALLBACK typedef ptr proto_DRVCALLBACK
LPDRVCALLBACK typedef ptr DRVCALLBACK
ifdef _WIN32
PDRVCALLBACK typedef ptr DRVCALLBACK
endif 
ifndef MMNOMMSYSTEM
if (WINVER le 030Ah)
@DefProto WINMMAPI, mmsystemGetVersion, stdcall, , <>, 0
endif 
ifdef _WIN32
OutputDebugStr	EQU	<OutputDebugString>
else 
OutputDebugStr proto WINSTDCALLCONV :LPSTR
endif 
endif 
ifndef MMNOSOUND
ifdef _WIN32
@DefProto WINMMAPI, sndPlaySoundA, stdcall, , <:LPSTR, :DWORD>, 8
@DefProto WINMMAPI, sndPlaySoundW, stdcall, , <:LPWSTR, :DWORD>, 8
ifdef UNICODE
sndPlaySound	EQU	<sndPlaySoundW>
else 
sndPlaySound	EQU	<sndPlaySoundA>
endif 
else 
sndPlaySound proto WINSTDCALLCONV :LPSTR, :DWORD
endif 
SND_SYNC	EQU	0000h
SND_ASYNC	EQU	0001h
SND_NODEFAULT	EQU	0002h
SND_MEMORY	EQU	0004h
SND_LOOP	EQU	0008h
SND_NOSTOP	EQU	0010h
SND_NOWAIT	EQU	00002000h
SND_ALIAS	EQU	00010000h
SND_ALIAS_ID	EQU	00110000h
SND_FILENAME	EQU	00020000h
SND_RESOURCE	EQU	00040004h
if (WINVER ge 0400h)
SND_PURGE	EQU	0040h
SND_APPLICATION	EQU	0080h
endif 
SND_ALIAS_START	EQU	0
ifdef _WIN32
sndAlias macro ch0,ch1
	exitm <( SND_ALIAS_START + ( ch0 )  or  ( ( ch1 )  shl  8 ) ) >
	endm
SND_ALIAS_SYSTEMASTERISK	EQU	<sndAlias ( 'S' , ' * ' )>
SND_ALIAS_SYSTEMQUESTION	EQU	<sndAlias ( 'S' , '?' )>
SND_ALIAS_SYSTEMHAND	EQU	<sndAlias ( 'S' , 'H' )>
SND_ALIAS_SYSTEMEXIT	EQU	<sndAlias ( 'S' , 'E' )>
SND_ALIAS_SYSTEMSTART	EQU	<sndAlias ( 'S' , 'S' )>
SND_ALIAS_SYSTEMWELCOME	EQU	<sndAlias ( 'S' , 'W' )>
SND_ALIAS_SYSTEMEXCLAMATION	EQU	<sndAlias ( 'S' , ' ! ' )>
SND_ALIAS_SYSTEMDEFAULT	EQU	<sndAlias ( 'S' , 'D' )>
@DefProto WINMMAPI, PlaySoundA, stdcall, , <:LPSTR, :HMODULE, :DWORD>, 12
@DefProto WINMMAPI, PlaySoundW, stdcall, , <:LPWSTR, :HMODULE, :DWORD>, 12
ifdef UNICODE
PlaySound	EQU	<PlaySoundW>
else 
PlaySound	EQU	<PlaySoundA>
endif 
else 
PlaySound proto WINSTDCALLCONV :LPSTR, :HMODULE, :DWORD
endif 
endif 
ifndef MMNOWAVE
WAVERR_BADFORMAT	EQU	( WAVERR_BASE + 0 )
WAVERR_STILLPLAYING	EQU	( WAVERR_BASE + 1 )
WAVERR_UNPREPARED	EQU	( WAVERR_BASE + 2 )
WAVERR_SYNC	EQU	( WAVERR_BASE + 3 )
WAVERR_LASTERROR	EQU	( WAVERR_BASE + 3 )
DECLARE_HANDLE( HWAVE)
DECLARE_HANDLE( HWAVEIN)
DECLARE_HANDLE( HWAVEOUT)
LPHWAVEIN typedef ptr HWAVEIN
LPHWAVEOUT typedef ptr HWAVEOUT
WAVECALLBACK typedef DRVCALLBACK
LPWAVECALLBACK typedef ptr WAVECALLBACK
WOM_OPEN	EQU	<MM_WOM_OPEN>
WOM_CLOSE	EQU	<MM_WOM_CLOSE>
WOM_DONE	EQU	<MM_WOM_DONE>
WIM_OPEN	EQU	<MM_WIM_OPEN>
WIM_CLOSE	EQU	<MM_WIM_CLOSE>
WIM_DATA	EQU	<MM_WIM_DATA>
WAVE_MAPPER	EQU	- 1
WAVE_FORMAT_QUERY	EQU	0001h
WAVE_ALLOWSYNC	EQU	0002h
if (WINVER ge 0400h)
WAVE_MAPPED	EQU	0004h
WAVE_FORMAT_DIRECT	EQU	0008h
WAVE_FORMAT_DIRECT_QUERY	EQU	( WAVE_FORMAT_QUERY  or  WAVE_FORMAT_DIRECT )
endif 
WAVEHDR	struct 
lpData	LPSTR	?
dwBufferLength	DWORD	?
dwBytesRecorded	DWORD	?
dwUser	DWORD_PTR	?
dwFlags	DWORD	?
dwLoops	DWORD	?
lpNext DWORD ?
reserved	DWORD_PTR	?
WAVEHDR	ends

PWAVEHDR typedef ptr WAVEHDR
NPWAVEHDR typedef ptr WAVEHDR
LPWAVEHDR typedef ptr WAVEHDR

WHDR_DONE	EQU	00000001h
WHDR_PREPARED	EQU	00000002h
WHDR_BEGINLOOP	EQU	00000004h
WHDR_ENDLOOP	EQU	00000008h
WHDR_INQUEUE	EQU	00000010h
ifdef _WIN32
WAVEOUTCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
WAVEOUTCAPSA	ends

PWAVEOUTCAPSA typedef ptr WAVEOUTCAPSA
NPWAVEOUTCAPSA typedef ptr WAVEOUTCAPSA
LPWAVEOUTCAPSA typedef ptr WAVEOUTCAPSA

WAVEOUTCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
WAVEOUTCAPSW	ends

PWAVEOUTCAPSW typedef ptr WAVEOUTCAPSW
NPWAVEOUTCAPSW typedef ptr WAVEOUTCAPSW
LPWAVEOUTCAPSW typedef ptr WAVEOUTCAPSW

ifdef UNICODE
WAVEOUTCAPS typedef WAVEOUTCAPSW
PWAVEOUTCAPS typedef PWAVEOUTCAPSW
NPWAVEOUTCAPS typedef NPWAVEOUTCAPSW
LPWAVEOUTCAPS typedef LPWAVEOUTCAPSW
else 
WAVEOUTCAPS typedef WAVEOUTCAPSA
PWAVEOUTCAPS typedef PWAVEOUTCAPSA
NPWAVEOUTCAPS typedef NPWAVEOUTCAPSA
LPWAVEOUTCAPS typedef LPWAVEOUTCAPSA
endif 
WAVEOUTCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
WAVEOUTCAPS2A	ends

PWAVEOUTCAPS2A typedef ptr WAVEOUTCAPS2A
NPWAVEOUTCAPS2A typedef ptr WAVEOUTCAPS2A
LPWAVEOUTCAPS2A typedef ptr WAVEOUTCAPS2A

WAVEOUTCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
WAVEOUTCAPS2W	ends

PWAVEOUTCAPS2W typedef ptr WAVEOUTCAPS2W
NPWAVEOUTCAPS2W typedef ptr WAVEOUTCAPS2W
LPWAVEOUTCAPS2W typedef ptr WAVEOUTCAPS2W

ifdef UNICODE
WAVEOUTCAPS2 typedef WAVEOUTCAPS2W
PWAVEOUTCAPS2 typedef PWAVEOUTCAPS2W
NPWAVEOUTCAPS2 typedef NPWAVEOUTCAPS2W
LPWAVEOUTCAPS2 typedef LPWAVEOUTCAPS2W
else 
WAVEOUTCAPS2 typedef WAVEOUTCAPS2A
PWAVEOUTCAPS2 typedef PWAVEOUTCAPS2A
NPWAVEOUTCAPS2 typedef NPWAVEOUTCAPS2A
LPWAVEOUTCAPS2 typedef LPWAVEOUTCAPS2A
endif 
else 
WAVEOUTCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
dwSupport	DWORD	?
WAVEOUTCAPS	ends

PWAVEOUTCAPS typedef ptr WAVEOUTCAPS
NPWAVEOUTCAPS typedef ptr WAVEOUTCAPS
LPWAVEOUTCAPS typedef ptr WAVEOUTCAPS

endif 
WAVECAPS_PITCH	EQU	0001h
WAVECAPS_PLAYBACKRATE	EQU	0002h
WAVECAPS_VOLUME	EQU	0004h
WAVECAPS_LRVOLUME	EQU	0008h
WAVECAPS_SYNC	EQU	0010h
WAVECAPS_SAMPLEACCURATE	EQU	0020h
ifdef _WIN32
WAVEINCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
WAVEINCAPSA	ends

PWAVEINCAPSA typedef ptr WAVEINCAPSA
NPWAVEINCAPSA typedef ptr WAVEINCAPSA
LPWAVEINCAPSA typedef ptr WAVEINCAPSA

WAVEINCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
WAVEINCAPSW	ends

PWAVEINCAPSW typedef ptr WAVEINCAPSW
NPWAVEINCAPSW typedef ptr WAVEINCAPSW
LPWAVEINCAPSW typedef ptr WAVEINCAPSW

ifdef UNICODE
WAVEINCAPS typedef WAVEINCAPSW
PWAVEINCAPS typedef PWAVEINCAPSW
NPWAVEINCAPS typedef NPWAVEINCAPSW
LPWAVEINCAPS typedef LPWAVEINCAPSW
else 
WAVEINCAPS typedef WAVEINCAPSA
PWAVEINCAPS typedef PWAVEINCAPSA
NPWAVEINCAPS typedef NPWAVEINCAPSA
LPWAVEINCAPS typedef LPWAVEINCAPSA
endif 
WAVEINCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
WAVEINCAPS2A	ends

PWAVEINCAPS2A typedef ptr WAVEINCAPS2A
NPWAVEINCAPS2A typedef ptr WAVEINCAPS2A
LPWAVEINCAPS2A typedef ptr WAVEINCAPS2A

WAVEINCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
wReserved1	WORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
WAVEINCAPS2W	ends

PWAVEINCAPS2W typedef ptr WAVEINCAPS2W
NPWAVEINCAPS2W typedef ptr WAVEINCAPS2W
LPWAVEINCAPS2W typedef ptr WAVEINCAPS2W

ifdef UNICODE
WAVEINCAPS2 typedef WAVEINCAPS2W
PWAVEINCAPS2 typedef PWAVEINCAPS2W
NPWAVEINCAPS2 typedef NPWAVEINCAPS2W
LPWAVEINCAPS2 typedef LPWAVEINCAPS2W
else 
WAVEINCAPS2 typedef WAVEINCAPS2A
PWAVEINCAPS2 typedef PWAVEINCAPS2A
NPWAVEINCAPS2 typedef NPWAVEINCAPS2A
LPWAVEINCAPS2 typedef LPWAVEINCAPS2A
endif 
else 
WAVEINCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
dwFormats	DWORD	?
wChannels	WORD	?
WAVEINCAPS	ends

PWAVEINCAPS typedef ptr WAVEINCAPS
NPWAVEINCAPS typedef ptr WAVEINCAPS
LPWAVEINCAPS typedef ptr WAVEINCAPS

endif 
WAVE_INVALIDFORMAT	EQU	00000000h
WAVE_FORMAT_1M08	EQU	00000001h
WAVE_FORMAT_1S08	EQU	00000002h
WAVE_FORMAT_1M16	EQU	00000004h
WAVE_FORMAT_1S16	EQU	00000008h
WAVE_FORMAT_2M08	EQU	00000010h
WAVE_FORMAT_2S08	EQU	00000020h
WAVE_FORMAT_2M16	EQU	00000040h
WAVE_FORMAT_2S16	EQU	00000080h
WAVE_FORMAT_4M08	EQU	00000100h
WAVE_FORMAT_4S08	EQU	00000200h
WAVE_FORMAT_4M16	EQU	00000400h
WAVE_FORMAT_4S16	EQU	00000800h
WAVE_FORMAT_44M08	EQU	00000100h
WAVE_FORMAT_44S08	EQU	00000200h
WAVE_FORMAT_44M16	EQU	00000400h
WAVE_FORMAT_44S16	EQU	00000800h
WAVE_FORMAT_48M08	EQU	00001000h
WAVE_FORMAT_48S08	EQU	00002000h
WAVE_FORMAT_48M16	EQU	00004000h
WAVE_FORMAT_48S16	EQU	00008000h
WAVE_FORMAT_96M08	EQU	00010000h
WAVE_FORMAT_96S08	EQU	00020000h
WAVE_FORMAT_96M16	EQU	00040000h
WAVE_FORMAT_96S16	EQU	00080000h
ifndef WAVE_FORMAT_PCM
WAVEFORMAT	struct 
wFormatTag	WORD	?
nChannels	WORD	?
nSamplesPerSec	DWORD	?
nAvgBytesPerSec	DWORD	?
nBlockAlign	WORD	?
WAVEFORMAT	ends

PWAVEFORMAT typedef ptr WAVEFORMAT
NPWAVEFORMAT typedef ptr WAVEFORMAT
LPWAVEFORMAT typedef ptr WAVEFORMAT

WAVE_FORMAT_PCM	EQU	1
PCMWAVEFORMAT	struct 
wf	WAVEFORMAT	<>
wBitsPerSample	WORD	?
PCMWAVEFORMAT	ends

PPCMWAVEFORMAT typedef ptr PCMWAVEFORMAT
NPPCMWAVEFORMAT typedef ptr PCMWAVEFORMAT
LPPCMWAVEFORMAT typedef ptr PCMWAVEFORMAT

endif 
ifndef _WAVEFORMATEX_
_WAVEFORMATEX_	EQU	<>
WAVEFORMATEX	struct 
wFormatTag	WORD	?
nChannels	WORD	?
nSamplesPerSec	DWORD	?
nAvgBytesPerSec	DWORD	?
nBlockAlign	WORD	?
wBitsPerSample	WORD	?
cbSize	WORD	?
WAVEFORMATEX	ends

PWAVEFORMATEX typedef ptr WAVEFORMATEX
NPWAVEFORMATEX typedef ptr WAVEFORMATEX
LPWAVEFORMATEX typedef ptr WAVEFORMATEX

endif 
LPCWAVEFORMATEX typedef ptr WAVEFORMATEX
@DefProto WINMMAPI, waveOutGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
@DefProto WINMMAPI, waveOutGetDevCapsA, stdcall, , <:UINT_PTR, :LPWAVEOUTCAPSA, :DWORD>, 12
@DefProto WINMMAPI, waveOutGetDevCapsW, stdcall, , <:UINT_PTR, :LPWAVEOUTCAPSW, :DWORD>, 12
ifdef UNICODE
waveOutGetDevCaps	EQU	<waveOutGetDevCapsW>
else 
waveOutGetDevCaps	EQU	<waveOutGetDevCapsA>
endif 
else 
@DefProto WINMMAPI, waveOutGetDevCaps, stdcall, , <:DWORD, :LPWAVEOUTCAPS, :DWORD>, 12
endif 
if (WINVER ge 0400h)
@DefProto WINMMAPI, waveOutGetVolume, stdcall, , <:HWAVEOUT, :LPDWORD>, 8
@DefProto WINMMAPI, waveOutSetVolume, stdcall, , <:HWAVEOUT, :DWORD>, 8
else 
@DefProto WINMMAPI, waveOutGetVolume, stdcall, , <:DWORD, :LPDWORD>, 8
@DefProto WINMMAPI, waveOutSetVolume, stdcall, , <:DWORD, :DWORD>, 8
endif 
ifdef _WIN32
@DefProto WINMMAPI, waveOutGetErrorTextA, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
@DefProto WINMMAPI, waveOutGetErrorTextW, stdcall, , <:MMRESULT, :LPWSTR, :DWORD>, 12
ifdef UNICODE
waveOutGetErrorText	EQU	<waveOutGetErrorTextW>
else 
waveOutGetErrorText	EQU	<waveOutGetErrorTextA>
endif 
else 
waveOutGetErrorText proto WINSTDCALLCONV :MMRESULT, :LPSTR, :DWORD
endif 
@DefProto WINMMAPI, waveOutOpen, stdcall, , <:LPHWAVEOUT, :DWORD, :LPCWAVEFORMATEX, :DWORD_PTR, :DWORD_PTR, :DWORD>, 24
@DefProto WINMMAPI, waveOutClose, stdcall, , <:HWAVEOUT>, 4
@DefProto WINMMAPI, waveOutPrepareHeader, stdcall, , <:HWAVEOUT, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveOutUnprepareHeader, stdcall, , <:HWAVEOUT, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveOutWrite, stdcall, , <:HWAVEOUT, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveOutPause, stdcall, , <:HWAVEOUT>, 4
@DefProto WINMMAPI, waveOutRestart, stdcall, , <:HWAVEOUT>, 4
@DefProto WINMMAPI, waveOutReset, stdcall, , <:HWAVEOUT>, 4
@DefProto WINMMAPI, waveOutBreakLoop, stdcall, , <:HWAVEOUT>, 4
@DefProto WINMMAPI, waveOutGetPosition, stdcall, , <:HWAVEOUT, :LPMMTIME, :DWORD>, 12
@DefProto WINMMAPI, waveOutGetPitch, stdcall, , <:HWAVEOUT, :LPDWORD>, 8
@DefProto WINMMAPI, waveOutSetPitch, stdcall, , <:HWAVEOUT, :DWORD>, 8
@DefProto WINMMAPI, waveOutGetPlaybackRate, stdcall, , <:HWAVEOUT, :LPDWORD>, 8
@DefProto WINMMAPI, waveOutSetPlaybackRate, stdcall, , <:HWAVEOUT, :DWORD>, 8
@DefProto WINMMAPI, waveOutGetID, stdcall, , <:HWAVEOUT, :LPUINT>, 8
if (WINVER ge 030ah)
ifdef _WIN32
@DefProto WINMMAPI, waveOutMessage, stdcall, , <:HWAVEOUT, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
else 
waveOutMessage proto WINSTDCALLCONV :HWAVEOUT, :DWORD, :DWORD, :DWORD
endif 
endif 
@DefProto WINMMAPI, waveInGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
@DefProto WINMMAPI, waveInGetDevCapsA, stdcall, , <:UINT_PTR, :LPWAVEINCAPSA, :DWORD>, 12
@DefProto WINMMAPI, waveInGetDevCapsW, stdcall, , <:UINT_PTR, :LPWAVEINCAPSW, :DWORD>, 12
ifdef UNICODE
waveInGetDevCaps	EQU	<waveInGetDevCapsW>
else 
waveInGetDevCaps	EQU	<waveInGetDevCapsA>
endif 
else 
waveInGetDevCaps proto WINSTDCALLCONV :DWORD, :LPWAVEINCAPS, :DWORD
endif 
ifdef _WIN32
@DefProto WINMMAPI, waveInGetErrorTextA, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
@DefProto WINMMAPI, waveInGetErrorTextW, stdcall, , <:MMRESULT, :LPWSTR, :DWORD>, 12
ifdef UNICODE
waveInGetErrorText	EQU	<waveInGetErrorTextW>
else 
waveInGetErrorText	EQU	<waveInGetErrorTextA>
endif 
else 
waveInGetErrorText proto WINSTDCALLCONV :MMRESULT, :LPSTR, :DWORD
endif 
@DefProto WINMMAPI, waveInOpen, stdcall, , <:LPHWAVEIN, :DWORD, :LPCWAVEFORMATEX, :DWORD_PTR, :DWORD_PTR, :DWORD>, 24
@DefProto WINMMAPI, waveInClose, stdcall, , <:HWAVEIN>, 4
@DefProto WINMMAPI, waveInPrepareHeader, stdcall, , <:HWAVEIN, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveInUnprepareHeader, stdcall, , <:HWAVEIN, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveInAddBuffer, stdcall, , <:HWAVEIN, :LPWAVEHDR, :DWORD>, 12
@DefProto WINMMAPI, waveInStart, stdcall, , <:HWAVEIN>, 4
@DefProto WINMMAPI, waveInStop, stdcall, , <:HWAVEIN>, 4
@DefProto WINMMAPI, waveInReset, stdcall, , <:HWAVEIN>, 4
@DefProto WINMMAPI, waveInGetPosition, stdcall, , <:HWAVEIN, :LPMMTIME, :DWORD>, 12
@DefProto WINMMAPI, waveInGetID, stdcall, , <:HWAVEIN, :LPUINT>, 8
if (WINVER ge 030ah)
ifdef _WIN32
@DefProto WINMMAPI, waveInMessage, stdcall, , <:HWAVEIN, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
else 
waveInMessage proto WINSTDCALLCONV :HWAVEIN, :DWORD, :DWORD, :DWORD
endif 
endif 
endif 
ifndef MMNOMIDI
MIDIERR_UNPREPARED	EQU	( MIDIERR_BASE + 0 )
MIDIERR_STILLPLAYING	EQU	( MIDIERR_BASE + 1 )
MIDIERR_NOMAP	EQU	( MIDIERR_BASE + 2 )
MIDIERR_NOTREADY	EQU	( MIDIERR_BASE + 3 )
MIDIERR_NODEVICE	EQU	( MIDIERR_BASE + 4 )
MIDIERR_INVALIDSETUP	EQU	( MIDIERR_BASE + 5 )
MIDIERR_BADOPENMODE	EQU	( MIDIERR_BASE + 6 )
MIDIERR_DONT_CONTINUE	EQU	( MIDIERR_BASE + 7 )
MIDIERR_LASTERROR	EQU	( MIDIERR_BASE + 7 )
DECLARE_HANDLE( HMIDI)
DECLARE_HANDLE( HMIDIIN)
DECLARE_HANDLE( HMIDIOUT)
DECLARE_HANDLE( HMIDISTRM)
LPHMIDI typedef ptr HMIDI
LPHMIDIIN typedef ptr HMIDIIN
LPHMIDIOUT typedef ptr HMIDIOUT
LPHMIDISTRM typedef ptr HMIDISTRM
MIDICALLBACK typedef DRVCALLBACK
LPMIDICALLBACK typedef ptr MIDICALLBACK
MIDIPATCHSIZE	EQU	128
PATCHARRAY typedef WORD
LPPATCHARRAY typedef ptr WORD
KEYARRAY typedef WORD
LPKEYARRAY typedef ptr WORD
MIM_OPEN	EQU	<MM_MIM_OPEN>
MIM_CLOSE	EQU	<MM_MIM_CLOSE>
MIM_DATA	EQU	<MM_MIM_DATA>
MIM_LONGDATA	EQU	<MM_MIM_LONGDATA>
MIM_ERROR	EQU	<MM_MIM_ERROR>
MIM_LONGERROR	EQU	<MM_MIM_LONGERROR>
MOM_OPEN	EQU	<MM_MOM_OPEN>
MOM_CLOSE	EQU	<MM_MOM_CLOSE>
MOM_DONE	EQU	<MM_MOM_DONE>
if (WINVER ge 0400h)
MIM_MOREDATA	EQU	<MM_MIM_MOREDATA>
MOM_POSITIONCB	EQU	<MM_MOM_POSITIONCB>
endif 
MIDIMAPPER	EQU	- 1
MIDI_MAPPER	EQU	- 1
if (WINVER ge 0400h)
MIDI_IO_STATUS	EQU	00000020h
endif 
MIDI_CACHE_ALL	EQU	1
MIDI_CACHE_BESTFIT	EQU	2
MIDI_CACHE_QUERY	EQU	3
MIDI_UNCACHE	EQU	4
ifdef _WIN32
MIDIOUTCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wVoices	WORD	?
wNotes	WORD	?
wChannelMask	WORD	?
dwSupport	DWORD	?
MIDIOUTCAPSA	ends

PMIDIOUTCAPSA typedef ptr MIDIOUTCAPSA
NPMIDIOUTCAPSA typedef ptr MIDIOUTCAPSA
LPMIDIOUTCAPSA typedef ptr MIDIOUTCAPSA

MIDIOUTCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wVoices	WORD	?
wNotes	WORD	?
wChannelMask	WORD	?
dwSupport	DWORD	?
MIDIOUTCAPSW	ends

PMIDIOUTCAPSW typedef ptr MIDIOUTCAPSW
NPMIDIOUTCAPSW typedef ptr MIDIOUTCAPSW
LPMIDIOUTCAPSW typedef ptr MIDIOUTCAPSW

ifdef UNICODE
MIDIOUTCAPS typedef MIDIOUTCAPSW
PMIDIOUTCAPS typedef PMIDIOUTCAPSW
NPMIDIOUTCAPS typedef NPMIDIOUTCAPSW
LPMIDIOUTCAPS typedef LPMIDIOUTCAPSW
else 
MIDIOUTCAPS typedef MIDIOUTCAPSA
PMIDIOUTCAPS typedef PMIDIOUTCAPSA
NPMIDIOUTCAPS typedef NPMIDIOUTCAPSA
LPMIDIOUTCAPS typedef LPMIDIOUTCAPSA
endif 
MIDIOUTCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wVoices	WORD	?
wNotes	WORD	?
wChannelMask	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIDIOUTCAPS2A	ends

PMIDIOUTCAPS2A typedef ptr MIDIOUTCAPS2A
NPMIDIOUTCAPS2A typedef ptr MIDIOUTCAPS2A
LPMIDIOUTCAPS2A typedef ptr MIDIOUTCAPS2A

MIDIOUTCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wVoices	WORD	?
wNotes	WORD	?
wChannelMask	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIDIOUTCAPS2W	ends

PMIDIOUTCAPS2W typedef ptr MIDIOUTCAPS2W
NPMIDIOUTCAPS2W typedef ptr MIDIOUTCAPS2W
LPMIDIOUTCAPS2W typedef ptr MIDIOUTCAPS2W

ifdef UNICODE
MIDIOUTCAPS2 typedef MIDIOUTCAPS2W
PMIDIOUTCAPS2 typedef PMIDIOUTCAPS2W
NPMIDIOUTCAPS2 typedef NPMIDIOUTCAPS2W
LPMIDIOUTCAPS2 typedef LPMIDIOUTCAPS2W
else 
MIDIOUTCAPS2 typedef MIDIOUTCAPS2A
PMIDIOUTCAPS2 typedef PMIDIOUTCAPS2A
NPMIDIOUTCAPS2 typedef NPMIDIOUTCAPS2A
LPMIDIOUTCAPS2 typedef LPMIDIOUTCAPS2A
endif 
else 
MIDIOUTCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
wTechnology	WORD	?
wVoices	WORD	?
wNotes	WORD	?
wChannelMask	WORD	?
dwSupport	DWORD	?
MIDIOUTCAPS	ends

PMIDIOUTCAPS typedef ptr MIDIOUTCAPS
NPMIDIOUTCAPS typedef ptr MIDIOUTCAPS
LPMIDIOUTCAPS typedef ptr MIDIOUTCAPS

endif 
MOD_MIDIPORT	EQU	1
MOD_SYNTH	EQU	2
MOD_SQSYNTH	EQU	3
MOD_FMSYNTH	EQU	4
MOD_MAPPER	EQU	5
MOD_WAVETABLE	EQU	6
MOD_SWSYNTH	EQU	7
MIDICAPS_VOLUME	EQU	0001h
MIDICAPS_LRVOLUME	EQU	0002h
MIDICAPS_CACHE	EQU	0004h
if (WINVER ge 0400h)
MIDICAPS_STREAM	EQU	0008h
endif 
ifdef _WIN32
MIDIINCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
if (WINVER ge 0400h)
dwSupport	DWORD	?
endif 
MIDIINCAPSA	ends

PMIDIINCAPSA typedef ptr MIDIINCAPSA
NPMIDIINCAPSA typedef ptr MIDIINCAPSA
LPMIDIINCAPSA typedef ptr MIDIINCAPSA

MIDIINCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
if (WINVER ge 0400h)
dwSupport	DWORD	?
endif 
MIDIINCAPSW	ends

PMIDIINCAPSW typedef ptr MIDIINCAPSW
NPMIDIINCAPSW typedef ptr MIDIINCAPSW
LPMIDIINCAPSW typedef ptr MIDIINCAPSW

ifdef UNICODE
MIDIINCAPS typedef MIDIINCAPSW
PMIDIINCAPS typedef PMIDIINCAPSW
NPMIDIINCAPS typedef NPMIDIINCAPSW
LPMIDIINCAPS typedef LPMIDIINCAPSW
else 
MIDIINCAPS typedef MIDIINCAPSA
PMIDIINCAPS typedef PMIDIINCAPSA
NPMIDIINCAPS typedef NPMIDIINCAPSA
LPMIDIINCAPS typedef LPMIDIINCAPSA
endif 
MIDIINCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
if (WINVER ge 0400h)
dwSupport	DWORD	?
endif 
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIDIINCAPS2A	ends

PMIDIINCAPS2A typedef ptr MIDIINCAPS2A
NPMIDIINCAPS2A typedef ptr MIDIINCAPS2A
LPMIDIINCAPS2A typedef ptr MIDIINCAPS2A

MIDIINCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
if (WINVER ge 0400h)
dwSupport	DWORD	?
endif 
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIDIINCAPS2W	ends

PMIDIINCAPS2W typedef ptr MIDIINCAPS2W
NPMIDIINCAPS2W typedef ptr MIDIINCAPS2W
LPMIDIINCAPS2W typedef ptr MIDIINCAPS2W

ifdef UNICODE
MIDIINCAPS2 typedef MIDIINCAPS2W
PMIDIINCAPS2 typedef PMIDIINCAPS2W
NPMIDIINCAPS2 typedef NPMIDIINCAPS2W
LPMIDIINCAPS2 typedef LPMIDIINCAPS2W
else 
MIDIINCAPS2 typedef MIDIINCAPS2A
PMIDIINCAPS2 typedef PMIDIINCAPS2A
NPMIDIINCAPS2 typedef NPMIDIINCAPS2A
LPMIDIINCAPS2 typedef LPMIDIINCAPS2A
endif 
else 
MIDIINCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
if (WINVER ge 0400h)
dwSupport	DWORD	?
endif 
MIDIINCAPS	ends

PMIDIINCAPS typedef ptr MIDIINCAPS
NPMIDIINCAPS typedef ptr MIDIINCAPS
LPMIDIINCAPS typedef ptr MIDIINCAPS

endif 
MIDIHDR	struct 
lpData	LPSTR	?
dwBufferLength	DWORD	?
dwBytesRecorded	DWORD	?
dwUser	DWORD_PTR	?
dwFlags	DWORD	?
lpNext DWORD ?
reserved	DWORD_PTR	?
if (WINVER ge 0400h)
dwOffset	DWORD	?
dwReserved	DWORD_PTR 8 dup (?)
endif 
MIDIHDR	ends

PMIDIHDR typedef ptr MIDIHDR
NPMIDIHDR typedef ptr MIDIHDR
LPMIDIHDR typedef ptr MIDIHDR

if (WINVER ge 0400h)
MIDIEVENT	struct 
dwDeltaTime	DWORD	?
dwStreamID	DWORD	?
dwEvent	DWORD	?
dwParms	DWORD 1 dup (?)
MIDIEVENT	ends

MIDISTRMBUFFVER	struct 
dwVersion	DWORD	?
dwMid	DWORD	?
dwOEMVersion	DWORD	?
MIDISTRMBUFFVER	ends

endif 
MHDR_DONE	EQU	00000001h
MHDR_PREPARED	EQU	00000002h
MHDR_INQUEUE	EQU	00000004h
MHDR_ISSTRM	EQU	00000008h
if (WINVER ge 0400h)
MEVT_F_SHORT	EQU	00000000h
MEVT_F_LONG	EQU	80000000h
MEVT_F_CALLBACK	EQU	40000000h
MEVT_EVENTTYPE macro x
	exitm <( ( ( ( x )  shr  24 )  and  0FFh ) ) >
	endm
MEVT_EVENTPARM macro x
	exitm <( ( ( x )  and  00FFFFFFh ) ) >
	endm
MEVT_SHORTMSG	EQU	00h
MEVT_TEMPO	EQU	01h
MEVT_NOP	EQU	02h
MEVT_LONGMSG	EQU	80h
MEVT_COMMENT	EQU	82h
MEVT_VERSION	EQU	84h
MIDISTRM_ERROR	EQU	- 2
MIDIPROP_SET	EQU	80000000h
MIDIPROP_GET	EQU	40000000h
MIDIPROP_TIMEDIV	EQU	00000001h
MIDIPROP_TEMPO	EQU	00000002h
MIDIPROPTIMEDIV	struct 
cbStruct	DWORD	?
dwTimeDiv	DWORD	?
MIDIPROPTIMEDIV	ends

LPMIDIPROPTIMEDIV typedef ptr MIDIPROPTIMEDIV

MIDIPROPTEMPO	struct 
cbStruct	DWORD	?
dwTempo	DWORD	?
MIDIPROPTEMPO	ends

LPMIDIPROPTEMPO typedef ptr MIDIPROPTEMPO

endif 
@DefProto WINMMAPI, midiOutGetNumDevs, stdcall, , <>, 0
if (WINVER ge 0400h)
@DefProto WINMMAPI, midiStreamOpen, stdcall, , <:LPHMIDISTRM, :LPUINT, :DWORD, :DWORD_PTR, :DWORD_PTR, :DWORD>, 24
@DefProto WINMMAPI, midiStreamClose, stdcall, , <:HMIDISTRM>, 4
@DefProto WINMMAPI, midiStreamProperty, stdcall, , <:HMIDISTRM, :LPBYTE, :DWORD>, 12
@DefProto WINMMAPI, midiStreamPosition, stdcall, , <:HMIDISTRM, :LPMMTIME, :DWORD>, 12
@DefProto WINMMAPI, midiStreamOut, stdcall, , <:HMIDISTRM, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiStreamPause, stdcall, , <:HMIDISTRM>, 4
@DefProto WINMMAPI, midiStreamRestart, stdcall, , <:HMIDISTRM>, 4
@DefProto WINMMAPI, midiStreamStop, stdcall, , <:HMIDISTRM>, 4
ifdef _WIN32
@DefProto WINMMAPI, midiConnect, stdcall, , <:HMIDI, :HMIDIOUT, :LPVOID>, 12
@DefProto WINMMAPI, midiDisconnect, stdcall, , <:HMIDI, :HMIDIOUT, :LPVOID>, 12
endif 
endif 
ifdef _WIN32
@DefProto WINMMAPI, midiOutGetDevCapsA, stdcall, , <:UINT_PTR, :LPMIDIOUTCAPSA, :DWORD>, 12
@DefProto WINMMAPI, midiOutGetDevCapsW, stdcall, , <:UINT_PTR, :LPMIDIOUTCAPSW, :DWORD>, 12
ifdef UNICODE
midiOutGetDevCaps	EQU	<midiOutGetDevCapsW>
else 
midiOutGetDevCaps	EQU	<midiOutGetDevCapsA>
endif 
else 
midiOutGetDevCaps proto WINSTDCALLCONV :DWORD, :LPMIDIOUTCAPS, :DWORD
endif 
if (WINVER ge 0400h)
@DefProto WINMMAPI, midiOutGetVolume, stdcall, , <:HMIDIOUT, :LPDWORD>, 8
@DefProto WINMMAPI, midiOutSetVolume, stdcall, , <:HMIDIOUT, :DWORD>, 8
else 
@DefProto WINMMAPI, midiOutGetVolume, stdcall, , <:DWORD, :LPDWORD>, 8
@DefProto WINMMAPI, midiOutSetVolume, stdcall, , <:DWORD, :DWORD>, 8
endif 
ifdef _WIN32
@DefProto WINMMAPI, midiOutGetErrorTextA, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
@DefProto WINMMAPI, midiOutGetErrorTextW, stdcall, , <:MMRESULT, :LPWSTR, :DWORD>, 12
ifdef UNICODE
midiOutGetErrorText	EQU	<midiOutGetErrorTextW>
else 
midiOutGetErrorText	EQU	<midiOutGetErrorTextA>
endif 
else 
@DefProto WINMMAPI, midiOutGetErrorText, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
endif 
@DefProto WINMMAPI, midiOutOpen, stdcall, , <:LPHMIDIOUT, :DWORD, :DWORD_PTR, :DWORD_PTR, :DWORD>, 20
@DefProto WINMMAPI, midiOutClose, stdcall, , <:HMIDIOUT>, 4
@DefProto WINMMAPI, midiOutPrepareHeader, stdcall, , <:HMIDIOUT, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiOutUnprepareHeader, stdcall, , <:HMIDIOUT, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiOutShortMsg, stdcall, , <:HMIDIOUT, :DWORD>, 8
@DefProto WINMMAPI, midiOutLongMsg, stdcall, , <:HMIDIOUT, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiOutReset, stdcall, , <:HMIDIOUT>, 4
@DefProto WINMMAPI, midiOutCachePatches, stdcall, , <:HMIDIOUT, :DWORD, :LPWORD, :DWORD>, 16
@DefProto WINMMAPI, midiOutCacheDrumPatches, stdcall, , <:HMIDIOUT, :DWORD, :LPWORD, :DWORD>, 16
@DefProto WINMMAPI, midiOutGetID, stdcall, , <:HMIDIOUT, :LPUINT>, 8
if (WINVER ge 030ah)
ifdef _WIN32
@DefProto WINMMAPI, midiOutMessage, stdcall, , <:HMIDIOUT, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
else 
midiOutMessage proto WINSTDCALLCONV :HMIDIOUT, :DWORD, :DWORD, :DWORD
endif 
endif 
@DefProto WINMMAPI, midiInGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
@DefProto WINMMAPI, midiInGetDevCapsA, stdcall, , <:UINT_PTR, :LPMIDIINCAPSA, :DWORD>, 12
@DefProto WINMMAPI, midiInGetDevCapsW, stdcall, , <:UINT_PTR, :LPMIDIINCAPSW, :DWORD>, 12
ifdef UNICODE
midiInGetDevCaps	EQU	<midiInGetDevCapsW>
else 
midiInGetDevCaps	EQU	<midiInGetDevCapsA>
endif 
@DefProto WINMMAPI, midiInGetErrorTextA, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
@DefProto WINMMAPI, midiInGetErrorTextW, stdcall, , <:MMRESULT, :LPWSTR, :DWORD>, 12
ifdef UNICODE
midiInGetErrorText	EQU	<midiInGetErrorTextW>
else 
midiInGetErrorText	EQU	<midiInGetErrorTextA>
endif 
else 
midiInGetDevCaps proto WINSTDCALLCONV :DWORD, :LPMIDIINCAPS, :DWORD
@DefProto WINMMAPI, midiInGetErrorText, stdcall, , <:MMRESULT, :LPSTR, :DWORD>, 12
endif 
@DefProto WINMMAPI, midiInOpen, stdcall, , <:LPHMIDIIN, :DWORD, :DWORD_PTR, :DWORD_PTR, :DWORD>, 20
@DefProto WINMMAPI, midiInClose, stdcall, , <:HMIDIIN>, 4
@DefProto WINMMAPI, midiInPrepareHeader, stdcall, , <:HMIDIIN, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiInUnprepareHeader, stdcall, , <:HMIDIIN, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiInAddBuffer, stdcall, , <:HMIDIIN, :LPMIDIHDR, :DWORD>, 12
@DefProto WINMMAPI, midiInStart, stdcall, , <:HMIDIIN>, 4
@DefProto WINMMAPI, midiInStop, stdcall, , <:HMIDIIN>, 4
@DefProto WINMMAPI, midiInReset, stdcall, , <:HMIDIIN>, 4
@DefProto WINMMAPI, midiInGetID, stdcall, , <:HMIDIIN, :LPUINT>, 8
if (WINVER ge 030ah)
ifdef _WIN32
@DefProto WINMMAPI, midiInMessage, stdcall, , <:HMIDIIN, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
else 
midiInMessage proto WINSTDCALLCONV :HMIDIIN, :DWORD, :DWORD, :DWORD
endif 
endif 
endif 
ifndef MMNOAUX
AUX_MAPPER	EQU	- 1
ifdef _WIN32
AUXCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
AUXCAPSA	ends

PAUXCAPSA typedef ptr AUXCAPSA
NPAUXCAPSA typedef ptr AUXCAPSA
LPAUXCAPSA typedef ptr AUXCAPSA

AUXCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
AUXCAPSW	ends

PAUXCAPSW typedef ptr AUXCAPSW
NPAUXCAPSW typedef ptr AUXCAPSW
LPAUXCAPSW typedef ptr AUXCAPSW

ifdef UNICODE
AUXCAPS typedef AUXCAPSW
PAUXCAPS typedef PAUXCAPSW
NPAUXCAPS typedef NPAUXCAPSW
LPAUXCAPS typedef LPAUXCAPSW
else 
AUXCAPS typedef AUXCAPSA
PAUXCAPS typedef PAUXCAPSA
NPAUXCAPS typedef NPAUXCAPSA
LPAUXCAPS typedef LPAUXCAPSA
endif 
AUXCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
AUXCAPS2A	ends

PAUXCAPS2A typedef ptr AUXCAPS2A
NPAUXCAPS2A typedef ptr AUXCAPS2A
LPAUXCAPS2A typedef ptr AUXCAPS2A

AUXCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
wTechnology	WORD	?
wReserved1	WORD	?
dwSupport	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
AUXCAPS2W	ends

PAUXCAPS2W typedef ptr AUXCAPS2W
NPAUXCAPS2W typedef ptr AUXCAPS2W
LPAUXCAPS2W typedef ptr AUXCAPS2W

ifdef UNICODE
AUXCAPS2 typedef AUXCAPS2W
PAUXCAPS2 typedef PAUXCAPS2W
NPAUXCAPS2 typedef NPAUXCAPS2W
LPAUXCAPS2 typedef LPAUXCAPS2W
else 
AUXCAPS2 typedef AUXCAPS2A
PAUXCAPS2 typedef PAUXCAPS2A
NPAUXCAPS2 typedef NPAUXCAPS2A
LPAUXCAPS2 typedef LPAUXCAPS2A
endif 
else 
AUXCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
wTechnology	WORD	?
dwSupport	DWORD	?
AUXCAPS	ends

PAUXCAPS typedef ptr AUXCAPS
NPAUXCAPS typedef ptr AUXCAPS
LPAUXCAPS typedef ptr AUXCAPS

endif 
AUXCAPS_CDAUDIO	EQU	1
AUXCAPS_AUXIN	EQU	2
AUXCAPS_VOLUME	EQU	0001h
AUXCAPS_LRVOLUME	EQU	0002h
@DefProto WINMMAPI, auxGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
@DefProto WINMMAPI, auxGetDevCapsA, stdcall, , <:UINT_PTR, :LPAUXCAPSA, :DWORD>, 12
@DefProto WINMMAPI, auxGetDevCapsW, stdcall, , <:UINT_PTR, :LPAUXCAPSW, :DWORD>, 12
ifdef UNICODE
auxGetDevCaps	EQU	<auxGetDevCapsW>
else 
auxGetDevCaps	EQU	<auxGetDevCapsA>
endif 
else 
auxGetDevCaps proto WINSTDCALLCONV :DWORD, :LPAUXCAPS, :DWORD
endif 
@DefProto WINMMAPI, auxSetVolume, stdcall, , <:DWORD, :DWORD>, 8
@DefProto WINMMAPI, auxGetVolume, stdcall, , <:DWORD, :LPDWORD>, 8
if (WINVER ge 030ah)
ifdef _WIN32
@DefProto WINMMAPI, auxOutMessage, stdcall, , <:DWORD, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
else 
auxOutMessage proto WINSTDCALLCONV :DWORD, :DWORD, :DWORD, :DWORD
endif 
endif 
endif 
ifndef MMNOMIXER
DECLARE_HANDLE( HMIXEROBJ)
LPHMIXEROBJ typedef ptr HMIXEROBJ
DECLARE_HANDLE( HMIXER)
LPHMIXER typedef ptr HMIXER
MIXER_SHORT_NAME_CHARS	EQU	16
MIXER_LONG_NAME_CHARS	EQU	64
MIXERR_INVALLINE	EQU	( MIXERR_BASE + 0 )
MIXERR_INVALCONTROL	EQU	( MIXERR_BASE + 1 )
MIXERR_INVALVALUE	EQU	( MIXERR_BASE + 2 )
MIXERR_LASTERROR	EQU	( MIXERR_BASE + 2 )
MIXER_OBJECTF_HANDLE	EQU	80000000h
MIXER_OBJECTF_MIXER	EQU	00000000h
MIXER_OBJECTF_HMIXER	EQU	( MIXER_OBJECTF_HANDLE  or  MIXER_OBJECTF_MIXER )
MIXER_OBJECTF_WAVEOUT	EQU	10000000h
MIXER_OBJECTF_HWAVEOUT	EQU	( MIXER_OBJECTF_HANDLE  or  MIXER_OBJECTF_WAVEOUT )
MIXER_OBJECTF_WAVEIN	EQU	20000000h
MIXER_OBJECTF_HWAVEIN	EQU	( MIXER_OBJECTF_HANDLE  or  MIXER_OBJECTF_WAVEIN )
MIXER_OBJECTF_MIDIOUT	EQU	30000000h
MIXER_OBJECTF_HMIDIOUT	EQU	( MIXER_OBJECTF_HANDLE  or  MIXER_OBJECTF_MIDIOUT )
MIXER_OBJECTF_MIDIIN	EQU	40000000h
MIXER_OBJECTF_HMIDIIN	EQU	( MIXER_OBJECTF_HANDLE  or  MIXER_OBJECTF_MIDIIN )
MIXER_OBJECTF_AUX	EQU	50000000h
@DefProto WINMMAPI, mixerGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
MIXERCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
fdwSupport	DWORD	?
cDestinations	DWORD	?
MIXERCAPSA	ends

PMIXERCAPSA typedef ptr MIXERCAPSA
LPMIXERCAPSA typedef ptr MIXERCAPSA

MIXERCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
fdwSupport	DWORD	?
cDestinations	DWORD	?
MIXERCAPSW	ends

PMIXERCAPSW typedef ptr MIXERCAPSW
LPMIXERCAPSW typedef ptr MIXERCAPSW

ifdef UNICODE
MIXERCAPS typedef MIXERCAPSW
PMIXERCAPS typedef PMIXERCAPSW
LPMIXERCAPS typedef LPMIXERCAPSW
else 
MIXERCAPS typedef MIXERCAPSA
PMIXERCAPS typedef PMIXERCAPSA
LPMIXERCAPS typedef LPMIXERCAPSA
endif 
MIXERCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
fdwSupport	DWORD	?
cDestinations	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIXERCAPS2A	ends

PMIXERCAPS2A typedef ptr MIXERCAPS2A
LPMIXERCAPS2A typedef ptr MIXERCAPS2A

MIXERCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
fdwSupport	DWORD	?
cDestinations	DWORD	?
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
MIXERCAPS2W	ends

PMIXERCAPS2W typedef ptr MIXERCAPS2W
LPMIXERCAPS2W typedef ptr MIXERCAPS2W

ifdef UNICODE
MIXERCAPS2 typedef MIXERCAPS2W
PMIXERCAPS2 typedef PMIXERCAPS2W
LPMIXERCAPS2 typedef LPMIXERCAPS2W
else 
MIXERCAPS2 typedef MIXERCAPS2A
PMIXERCAPS2 typedef PMIXERCAPS2A
LPMIXERCAPS2 typedef LPMIXERCAPS2A
endif 
else 
MIXERCAPS	struct 
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
fdwSupport	DWORD	?
cDestinations	DWORD	?
MIXERCAPS	ends

PMIXERCAPS typedef ptr MIXERCAPS
LPMIXERCAPS typedef ptr MIXERCAPS

endif 
ifdef _WIN32
@DefProto WINMMAPI, mixerGetDevCapsA, stdcall, , <:UINT_PTR, :LPMIXERCAPSA, :DWORD>, 12
@DefProto WINMMAPI, mixerGetDevCapsW, stdcall, , <:UINT_PTR, :LPMIXERCAPSW, :DWORD>, 12
ifdef UNICODE
mixerGetDevCaps	EQU	<mixerGetDevCapsW>
else 
mixerGetDevCaps	EQU	<mixerGetDevCapsA>
endif 
else 
mixerGetDevCaps proto WINSTDCALLCONV :DWORD, :LPMIXERCAPS, :DWORD
endif 
@DefProto WINMMAPI, mixerOpen, stdcall, , <:LPHMIXER, :DWORD, :DWORD_PTR, :DWORD_PTR, :DWORD>, 20
@DefProto WINMMAPI, mixerClose, stdcall, , <:HMIXER>, 4
@DefProto WINMMAPI, mixerMessage, stdcall, , <:HMIXER, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
ifdef _WIN32
MIXERLINEA	struct 
cbStruct	DWORD	?
dwDestination	DWORD	?
dwSource	DWORD	?
dwLineID	DWORD	?
fdwLine	DWORD	?
dwUser	DWORD_PTR	?
dwComponentType	DWORD	?
cChannels	DWORD	?
cConnections	DWORD	?
cControls	DWORD	?
szShortName	CHAR MIXER_SHORT_NAME_CHARS dup (?)
szName	CHAR MIXER_LONG_NAME_CHARS dup (?)
struct Target
dwType	DWORD	?
dwDeviceID	DWORD	?
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	CHAR MAXPNAMELEN dup (?)
ends
MIXERLINEA	ends

PMIXERLINEA typedef ptr MIXERLINEA
LPMIXERLINEA typedef ptr MIXERLINEA

MIXERLINEW	struct 
cbStruct	DWORD	?
dwDestination	DWORD	?
dwSource	DWORD	?
dwLineID	DWORD	?
fdwLine	DWORD	?
dwUser	DWORD_PTR	?
dwComponentType	DWORD	?
cChannels	DWORD	?
cConnections	DWORD	?
cControls	DWORD	?
szShortName	WCHAR MIXER_SHORT_NAME_CHARS dup (?)
szName	WCHAR MIXER_LONG_NAME_CHARS dup (?)
struct Target
dwType	DWORD	?
dwDeviceID	DWORD	?
wMid	WORD	?
wPid	WORD	?
vDriverVersion	MMVERSION	?
szPname	WCHAR MAXPNAMELEN dup (?)
ends
MIXERLINEW	ends

PMIXERLINEW typedef ptr MIXERLINEW
LPMIXERLINEW typedef ptr MIXERLINEW

ifdef UNICODE
MIXERLINE typedef MIXERLINEW
PMIXERLINE typedef PMIXERLINEW
LPMIXERLINE typedef LPMIXERLINEW
else 
MIXERLINE typedef MIXERLINEA
PMIXERLINE typedef PMIXERLINEA
LPMIXERLINE typedef LPMIXERLINEA
endif 
else 
MIXERLINE	struct 
cbStruct	DWORD	?
dwDestination	DWORD	?
dwSource	DWORD	?
dwLineID	DWORD	?
fdwLine	DWORD	?
dwUser	DWORD	?
dwComponentType	DWORD	?
cChannels	DWORD	?
cConnections	DWORD	?
cControls	DWORD	?
szShortName	SBYTE MIXER_SHORT_NAME_CHARS dup (?)
szName	SBYTE MIXER_LONG_NAME_CHARS dup (?)
struct Target
dwType	DWORD	?
dwDeviceID	DWORD	?
wMid	WORD	?
wPid	WORD	?
vDriverVersion	VERSION	?
szPname	SBYTE MAXPNAMELEN dup (?)
ends
MIXERLINE	ends

PMIXERLINE typedef ptr MIXERLINE
LPMIXERLINE typedef ptr MIXERLINE

endif 
MIXERLINE_LINEF_ACTIVE	EQU	00000001h
MIXERLINE_LINEF_DISCONNECTED	EQU	00008000h
MIXERLINE_LINEF_SOURCE	EQU	80000000h
MIXERLINE_COMPONENTTYPE_DST_FIRST	EQU	00000000h
MIXERLINE_COMPONENTTYPE_DST_UNDEFINED	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 0 )
MIXERLINE_COMPONENTTYPE_DST_DIGITAL	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 1 )
MIXERLINE_COMPONENTTYPE_DST_LINE	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 2 )
MIXERLINE_COMPONENTTYPE_DST_MONITOR	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 3 )
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 4 )
MIXERLINE_COMPONENTTYPE_DST_HEADPHONES	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 5 )
MIXERLINE_COMPONENTTYPE_DST_TELEPHONE	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 6 )
MIXERLINE_COMPONENTTYPE_DST_WAVEIN	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 7 )
MIXERLINE_COMPONENTTYPE_DST_VOICEIN	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 )
MIXERLINE_COMPONENTTYPE_DST_LAST	EQU	( MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 )
MIXERLINE_COMPONENTTYPE_SRC_FIRST	EQU	00001000h
MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0 )
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1 )
MIXERLINE_COMPONENTTYPE_SRC_LINE	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2 )
MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3 )
MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4 )
MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5 )
MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6 )
MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7 )
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8 )
MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9 )
MIXERLINE_COMPONENTTYPE_SRC_ANALOG	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 )
MIXERLINE_COMPONENTTYPE_SRC_LAST	EQU	( MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 )
MIXERLINE_TARGETTYPE_UNDEFINED	EQU	0
MIXERLINE_TARGETTYPE_WAVEOUT	EQU	1
MIXERLINE_TARGETTYPE_WAVEIN	EQU	2
MIXERLINE_TARGETTYPE_MIDIOUT	EQU	3
MIXERLINE_TARGETTYPE_MIDIIN	EQU	4
MIXERLINE_TARGETTYPE_AUX	EQU	5
ifdef _WIN32
@DefProto WINMMAPI, mixerGetLineInfoA, stdcall, , <:HMIXEROBJ, :LPMIXERLINEA, :DWORD>, 12
@DefProto WINMMAPI, mixerGetLineInfoW, stdcall, , <:HMIXEROBJ, :LPMIXERLINEW, :DWORD>, 12
ifdef UNICODE
mixerGetLineInfo	EQU	<mixerGetLineInfoW>
else 
mixerGetLineInfo	EQU	<mixerGetLineInfoA>
endif 
else 
mixerGetLineInfo proto WINSTDCALLCONV :HMIXEROBJ, :LPMIXERLINE, :DWORD
endif 
MIXER_GETLINEINFOF_DESTINATION	EQU	00000000h
MIXER_GETLINEINFOF_SOURCE	EQU	00000001h
MIXER_GETLINEINFOF_LINEID	EQU	00000002h
MIXER_GETLINEINFOF_COMPONENTTYPE	EQU	00000003h
MIXER_GETLINEINFOF_TARGETTYPE	EQU	00000004h
MIXER_GETLINEINFOF_QUERYMASK	EQU	0000000Fh
@DefProto WINMMAPI, mixerGetID, stdcall, , <:HMIXEROBJ, :ptr DWORD, :DWORD>, 12
ifdef _WIN32
MIXERCONTROLA	struct 
cbStruct	DWORD	?
dwControlID	DWORD	?
dwControlType	DWORD	?
fdwControl	DWORD	?
cMultipleItems	DWORD	?
szShortName	CHAR MIXER_SHORT_NAME_CHARS dup (?)
szName	CHAR MIXER_LONG_NAME_CHARS dup (?)
union Bounds
struct
lMinimum	SDWORD	?
lMaximum	SDWORD	?
ends
struct
dwMinimum	DWORD	?
dwMaximum	DWORD	?
ends
dwReserved	DWORD 6 dup (?)
ends
union Metrics
cSteps	DWORD	?
cbCustomData	DWORD	?
dwReserved	DWORD 6 dup (?)
ends
MIXERCONTROLA	ends

PMIXERCONTROLA typedef ptr MIXERCONTROLA
LPMIXERCONTROLA typedef ptr MIXERCONTROLA

MIXERCONTROLW	struct 
cbStruct	DWORD	?
dwControlID	DWORD	?
dwControlType	DWORD	?
fdwControl	DWORD	?
cMultipleItems	DWORD	?
szShortName	WCHAR MIXER_SHORT_NAME_CHARS dup (?)
szName	WCHAR MIXER_LONG_NAME_CHARS dup (?)
union Bounds
struct
lMinimum	SDWORD	?
lMaximum	SDWORD	?
ends
struct
dwMinimum	DWORD	?
dwMaximum	DWORD	?
ends
dwReserved	DWORD 6 dup (?)
ends
union Metrics
cSteps	DWORD	?
cbCustomData	DWORD	?
dwReserved	DWORD 6 dup (?)
ends
MIXERCONTROLW	ends

PMIXERCONTROLW typedef ptr MIXERCONTROLW
LPMIXERCONTROLW typedef ptr MIXERCONTROLW

ifdef UNICODE
MIXERCONTROL typedef MIXERCONTROLW
PMIXERCONTROL typedef PMIXERCONTROLW
LPMIXERCONTROL typedef LPMIXERCONTROLW
else 
MIXERCONTROL typedef MIXERCONTROLA
PMIXERCONTROL typedef PMIXERCONTROLA
LPMIXERCONTROL typedef LPMIXERCONTROLA
endif 
else 
MIXERCONTROL	struct 
cbStruct	DWORD	?
dwControlID	DWORD	?
dwControlType	DWORD	?
fdwControl	DWORD	?
cMultipleItems	DWORD	?
szShortName	SBYTE MIXER_SHORT_NAME_CHARS dup (?)
szName	SBYTE MIXER_LONG_NAME_CHARS dup (?)
union Bounds
struct
lMinimum	SDWORD	?
lMaximum	SDWORD	?
ends
struct
dwMinimum	DWORD	?
dwMaximum	DWORD	?
ends
dwReserved	DWORD 6 dup (?)
ends
union Metrics
cSteps	DWORD	?
cbCustomData	DWORD	?
dwReserved	DWORD 6 dup (?)
ends
MIXERCONTROL	ends

PMIXERCONTROL typedef ptr MIXERCONTROL
LPMIXERCONTROL typedef ptr MIXERCONTROL

endif 
MIXERCONTROL_CONTROLF_UNIFORM	EQU	00000001h
MIXERCONTROL_CONTROLF_MULTIPLE	EQU	00000002h
MIXERCONTROL_CONTROLF_DISABLED	EQU	80000000h
MIXERCONTROL_CT_CLASS_MASK	EQU	0F0000000h
MIXERCONTROL_CT_CLASS_CUSTOM	EQU	00000000h
MIXERCONTROL_CT_CLASS_METER	EQU	10000000h
MIXERCONTROL_CT_CLASS_SWITCH	EQU	20000000h
MIXERCONTROL_CT_CLASS_NUMBER	EQU	30000000h
MIXERCONTROL_CT_CLASS_SLIDER	EQU	40000000h
MIXERCONTROL_CT_CLASS_FADER	EQU	50000000h
MIXERCONTROL_CT_CLASS_TIME	EQU	60000000h
MIXERCONTROL_CT_CLASS_LIST	EQU	70000000h
MIXERCONTROL_CT_SUBCLASS_MASK	EQU	0F000000h
MIXERCONTROL_CT_SC_SWITCH_BOOLEAN	EQU	00000000h
MIXERCONTROL_CT_SC_SWITCH_BUTTON	EQU	01000000h
MIXERCONTROL_CT_SC_METER_POLLED	EQU	00000000h
MIXERCONTROL_CT_SC_TIME_MICROSECS	EQU	00000000h
MIXERCONTROL_CT_SC_TIME_MILLISECS	EQU	01000000h
MIXERCONTROL_CT_SC_LIST_SINGLE	EQU	00000000h
MIXERCONTROL_CT_SC_LIST_MULTIPLE	EQU	01000000h
MIXERCONTROL_CT_UNITS_MASK	EQU	00FF0000h
MIXERCONTROL_CT_UNITS_CUSTOM	EQU	00000000h
MIXERCONTROL_CT_UNITS_BOOLEAN	EQU	00010000h
MIXERCONTROL_CT_UNITS_SIGNED	EQU	00020000h
MIXERCONTROL_CT_UNITS_UNSIGNED	EQU	00030000h
MIXERCONTROL_CT_UNITS_DECIBELS	EQU	00040000h
MIXERCONTROL_CT_UNITS_PERCENT	EQU	00050000h
MIXERCONTROL_CONTROLTYPE_CUSTOM	EQU	( MIXERCONTROL_CT_CLASS_CUSTOM  or  MIXERCONTROL_CT_UNITS_CUSTOM )
MIXERCONTROL_CONTROLTYPE_BOOLEANMETER	EQU	( MIXERCONTROL_CT_CLASS_METER  or  MIXERCONTROL_CT_SC_METER_POLLED  or  MIXERCONTROL_CT_UNITS_BOOLEAN )
MIXERCONTROL_CONTROLTYPE_SIGNEDMETER	EQU	( MIXERCONTROL_CT_CLASS_METER  or  MIXERCONTROL_CT_SC_METER_POLLED  or  MIXERCONTROL_CT_UNITS_SIGNED )
MIXERCONTROL_CONTROLTYPE_PEAKMETER	EQU	( MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1 )
MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER	EQU	( MIXERCONTROL_CT_CLASS_METER  or  MIXERCONTROL_CT_SC_METER_POLLED  or  MIXERCONTROL_CT_UNITS_UNSIGNED )
MIXERCONTROL_CONTROLTYPE_BOOLEAN	EQU	( MIXERCONTROL_CT_CLASS_SWITCH  or  MIXERCONTROL_CT_SC_SWITCH_BOOLEAN  or  MIXERCONTROL_CT_UNITS_BOOLEAN )
MIXERCONTROL_CONTROLTYPE_ONOFF	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1 )
MIXERCONTROL_CONTROLTYPE_MUTE	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2 )
MIXERCONTROL_CONTROLTYPE_MONO	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3 )
MIXERCONTROL_CONTROLTYPE_LOUDNESS	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4 )
MIXERCONTROL_CONTROLTYPE_STEREOENH	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5 )
MIXERCONTROL_CONTROLTYPE_BASS_BOOST	EQU	( MIXERCONTROL_CONTROLTYPE_BOOLEAN + 00002277h )
MIXERCONTROL_CONTROLTYPE_BUTTON	EQU	( MIXERCONTROL_CT_CLASS_SWITCH  or  MIXERCONTROL_CT_SC_SWITCH_BUTTON  or  MIXERCONTROL_CT_UNITS_BOOLEAN )
MIXERCONTROL_CONTROLTYPE_DECIBELS	EQU	( MIXERCONTROL_CT_CLASS_NUMBER  or  MIXERCONTROL_CT_UNITS_DECIBELS )
MIXERCONTROL_CONTROLTYPE_SIGNED	EQU	( MIXERCONTROL_CT_CLASS_NUMBER  or  MIXERCONTROL_CT_UNITS_SIGNED )
MIXERCONTROL_CONTROLTYPE_UNSIGNED	EQU	( MIXERCONTROL_CT_CLASS_NUMBER  or  MIXERCONTROL_CT_UNITS_UNSIGNED )
MIXERCONTROL_CONTROLTYPE_PERCENT	EQU	( MIXERCONTROL_CT_CLASS_NUMBER  or  MIXERCONTROL_CT_UNITS_PERCENT )
MIXERCONTROL_CONTROLTYPE_SLIDER	EQU	( MIXERCONTROL_CT_CLASS_SLIDER  or  MIXERCONTROL_CT_UNITS_SIGNED )
MIXERCONTROL_CONTROLTYPE_PAN	EQU	( MIXERCONTROL_CONTROLTYPE_SLIDER + 1 )
MIXERCONTROL_CONTROLTYPE_QSOUNDPAN	EQU	( MIXERCONTROL_CONTROLTYPE_SLIDER + 2 )
MIXERCONTROL_CONTROLTYPE_FADER	EQU	( MIXERCONTROL_CT_CLASS_FADER  or  MIXERCONTROL_CT_UNITS_UNSIGNED )
MIXERCONTROL_CONTROLTYPE_VOLUME	EQU	( MIXERCONTROL_CONTROLTYPE_FADER + 1 )
MIXERCONTROL_CONTROLTYPE_BASS	EQU	( MIXERCONTROL_CONTROLTYPE_FADER + 2 )
MIXERCONTROL_CONTROLTYPE_TREBLE	EQU	( MIXERCONTROL_CONTROLTYPE_FADER + 3 )
MIXERCONTROL_CONTROLTYPE_EQUALIZER	EQU	( MIXERCONTROL_CONTROLTYPE_FADER + 4 )
MIXERCONTROL_CONTROLTYPE_SINGLESELECT	EQU	( MIXERCONTROL_CT_CLASS_LIST  or  MIXERCONTROL_CT_SC_LIST_SINGLE  or  MIXERCONTROL_CT_UNITS_BOOLEAN )
MIXERCONTROL_CONTROLTYPE_MUX	EQU	( MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1 )
MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT	EQU	( MIXERCONTROL_CT_CLASS_LIST  or  MIXERCONTROL_CT_SC_LIST_MULTIPLE  or  MIXERCONTROL_CT_UNITS_BOOLEAN )
MIXERCONTROL_CONTROLTYPE_MIXER	EQU	( MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1 )
MIXERCONTROL_CONTROLTYPE_MICROTIME	EQU	( MIXERCONTROL_CT_CLASS_TIME  or  MIXERCONTROL_CT_SC_TIME_MICROSECS  or  MIXERCONTROL_CT_UNITS_UNSIGNED )
MIXERCONTROL_CONTROLTYPE_MILLITIME	EQU	( MIXERCONTROL_CT_CLASS_TIME  or  MIXERCONTROL_CT_SC_TIME_MILLISECS  or  MIXERCONTROL_CT_UNITS_UNSIGNED )
ifdef _WIN32
MIXERLINECONTROLSA	struct 
cbStruct	DWORD	?
dwLineID	DWORD	?
union
dwControlID	DWORD	?
dwControlType	DWORD	?
ends
cControls	DWORD	?
cbmxctrl	DWORD	?
pamxctrl	LPMIXERCONTROLA	?
MIXERLINECONTROLSA	ends

PMIXERLINECONTROLSA typedef ptr MIXERLINECONTROLSA
LPMIXERLINECONTROLSA typedef ptr MIXERLINECONTROLSA

MIXERLINECONTROLSW	struct 
cbStruct	DWORD	?
dwLineID	DWORD	?
union
dwControlID	DWORD	?
dwControlType	DWORD	?
ends
cControls	DWORD	?
cbmxctrl	DWORD	?
pamxctrl	LPMIXERCONTROLW	?
MIXERLINECONTROLSW	ends

PMIXERLINECONTROLSW typedef ptr MIXERLINECONTROLSW
LPMIXERLINECONTROLSW typedef ptr MIXERLINECONTROLSW

ifdef UNICODE
MIXERLINECONTROLS typedef MIXERLINECONTROLSW
PMIXERLINECONTROLS typedef PMIXERLINECONTROLSW
LPMIXERLINECONTROLS typedef LPMIXERLINECONTROLSW
else 
MIXERLINECONTROLS typedef MIXERLINECONTROLSA
PMIXERLINECONTROLS typedef PMIXERLINECONTROLSA
LPMIXERLINECONTROLS typedef LPMIXERLINECONTROLSA
endif 
else 
MIXERLINECONTROLS	struct 
cbStruct	DWORD	?
dwLineID	DWORD	?
union
dwControlID	DWORD	?
dwControlType	DWORD	?
ends
cControls	DWORD	?
cbmxctrl	DWORD	?
pamxctrl	LPMIXERCONTROL	?
MIXERLINECONTROLS	ends

PMIXERLINECONTROLS typedef ptr MIXERLINECONTROLS
LPMIXERLINECONTROLS typedef ptr MIXERLINECONTROLS

endif 
ifdef _WIN32
@DefProto WINMMAPI, mixerGetLineControlsA, stdcall, , <:HMIXEROBJ, :LPMIXERLINECONTROLSA, :DWORD>, 12
@DefProto WINMMAPI, mixerGetLineControlsW, stdcall, , <:HMIXEROBJ, :LPMIXERLINECONTROLSW, :DWORD>, 12
ifdef UNICODE
mixerGetLineControls	EQU	<mixerGetLineControlsW>
else 
mixerGetLineControls	EQU	<mixerGetLineControlsA>
endif 
else 
mixerGetLineControls proto WINSTDCALLCONV :HMIXEROBJ, :LPMIXERLINECONTROLS, :DWORD
endif 
MIXER_GETLINECONTROLSF_ALL	EQU	00000000h
MIXER_GETLINECONTROLSF_ONEBYID	EQU	00000001h
MIXER_GETLINECONTROLSF_ONEBYTYPE	EQU	00000002h
MIXER_GETLINECONTROLSF_QUERYMASK	EQU	0000000Fh
MIXERCONTROLDETAILS	struct 
cbStruct	DWORD	?
dwControlID	DWORD	?
cChannels	DWORD	?
union
hwndOwner	HWND	?
cMultipleItems	DWORD	?
ends
cbDetails	DWORD	?
paDetails	LPVOID	?
MIXERCONTROLDETAILS	ends

PMIXERCONTROLDETAILS typedef ptr MIXERCONTROLDETAILS
LPMIXERCONTROLDETAILS typedef ptr MIXERCONTROLDETAILS

ifdef _WIN32
MIXERCONTROLDETAILS_LISTTEXTA	struct 
dwParam1	DWORD	?
dwParam2	DWORD	?
szName	CHAR MIXER_LONG_NAME_CHARS dup (?)
MIXERCONTROLDETAILS_LISTTEXTA	ends

PMIXERCONTROLDETAILS_LISTTEXTA typedef ptr MIXERCONTROLDETAILS_LISTTEXTA
LPMIXERCONTROLDETAILS_LISTTEXTA typedef ptr MIXERCONTROLDETAILS_LISTTEXTA

MIXERCONTROLDETAILS_LISTTEXTW	struct 
dwParam1	DWORD	?
dwParam2	DWORD	?
szName	WCHAR MIXER_LONG_NAME_CHARS dup (?)
MIXERCONTROLDETAILS_LISTTEXTW	ends

PMIXERCONTROLDETAILS_LISTTEXTW typedef ptr MIXERCONTROLDETAILS_LISTTEXTW
LPMIXERCONTROLDETAILS_LISTTEXTW typedef ptr MIXERCONTROLDETAILS_LISTTEXTW

ifdef UNICODE
MIXERCONTROLDETAILS_LISTTEXT typedef MIXERCONTROLDETAILS_LISTTEXTW
PMIXERCONTROLDETAILS_LISTTEXT typedef PMIXERCONTROLDETAILS_LISTTEXTW
LPMIXERCONTROLDETAILS_LISTTEXT typedef LPMIXERCONTROLDETAILS_LISTTEXTW
else 
MIXERCONTROLDETAILS_LISTTEXT typedef MIXERCONTROLDETAILS_LISTTEXTA
PMIXERCONTROLDETAILS_LISTTEXT typedef PMIXERCONTROLDETAILS_LISTTEXTA
LPMIXERCONTROLDETAILS_LISTTEXT typedef LPMIXERCONTROLDETAILS_LISTTEXTA
endif 
else 
MIXERCONTROLDETAILS_LISTTEXT	struct 
dwParam1	DWORD	?
dwParam2	DWORD	?
szName	SBYTE MIXER_LONG_NAME_CHARS dup (?)
MIXERCONTROLDETAILS_LISTTEXT	ends

PMIXERCONTROLDETAILS_LISTTEXT typedef ptr MIXERCONTROLDETAILS_LISTTEXT
LPMIXERCONTROLDETAILS_LISTTEXT typedef ptr MIXERCONTROLDETAILS_LISTTEXT

endif 
MIXERCONTROLDETAILS_BOOLEAN	struct 
fValue	SDWORD	?
MIXERCONTROLDETAILS_BOOLEAN	ends

PMIXERCONTROLDETAILS_BOOLEAN typedef ptr MIXERCONTROLDETAILS_BOOLEAN
LPMIXERCONTROLDETAILS_BOOLEAN typedef ptr MIXERCONTROLDETAILS_BOOLEAN

MIXERCONTROLDETAILS_SIGNED	struct 
lValue	SDWORD	?
MIXERCONTROLDETAILS_SIGNED	ends

PMIXERCONTROLDETAILS_SIGNED typedef ptr MIXERCONTROLDETAILS_SIGNED
LPMIXERCONTROLDETAILS_SIGNED typedef ptr MIXERCONTROLDETAILS_SIGNED

MIXERCONTROLDETAILS_UNSIGNED	struct 
dwValue	DWORD	?
MIXERCONTROLDETAILS_UNSIGNED	ends

PMIXERCONTROLDETAILS_UNSIGNED typedef ptr MIXERCONTROLDETAILS_UNSIGNED
LPMIXERCONTROLDETAILS_UNSIGNED typedef ptr MIXERCONTROLDETAILS_UNSIGNED

ifdef _WIN32
@DefProto WINMMAPI, mixerGetControlDetailsA, stdcall, , <:HMIXEROBJ, :LPMIXERCONTROLDETAILS, :DWORD>, 12
@DefProto WINMMAPI, mixerGetControlDetailsW, stdcall, , <:HMIXEROBJ, :LPMIXERCONTROLDETAILS, :DWORD>, 12
ifdef UNICODE
mixerGetControlDetails	EQU	<mixerGetControlDetailsW>
else 
mixerGetControlDetails	EQU	<mixerGetControlDetailsA>
endif 
else 
mixerGetControlDetails proto WINSTDCALLCONV :HMIXEROBJ, :LPMIXERCONTROLDETAILS, :DWORD
endif 
MIXER_GETCONTROLDETAILSF_VALUE	EQU	00000000h
MIXER_GETCONTROLDETAILSF_LISTTEXT	EQU	00000001h
MIXER_GETCONTROLDETAILSF_QUERYMASK	EQU	0000000Fh
@DefProto WINMMAPI, mixerSetControlDetails, stdcall, , <:HMIXEROBJ, :LPMIXERCONTROLDETAILS, :DWORD>, 12
MIXER_SETCONTROLDETAILSF_VALUE	EQU	00000000h
MIXER_SETCONTROLDETAILSF_CUSTOM	EQU	00000001h
MIXER_SETCONTROLDETAILSF_QUERYMASK	EQU	0000000Fh
endif 
ifndef MMNOTIMER
TIMERR_NOERROR	EQU	0
TIMERR_NOCANDO	EQU	( TIMERR_BASE + 1 )
TIMERR_STRUCT	EQU	( TIMERR_BASE + 33 )
proto_TIMECALLBACK typedef proto WINSTDCALLCONV :DWORD,:DWORD,:DWORD_PTR,:DWORD_PTR,:DWORD_PTR
TIMECALLBACK typedef ptr proto_TIMECALLBACK
LPTIMECALLBACK typedef ptr TIMECALLBACK
TIME_ONESHOT	EQU	0000h
TIME_PERIODIC	EQU	0001h
ifdef _WIN32
TIME_CALLBACK_FUNCTION	EQU	0000h
TIME_CALLBACK_EVENT_SET	EQU	0010h
TIME_CALLBACK_EVENT_PULSE	EQU	0020h
endif 
if WINVER ge 0501h
TIME_KILL_SYNCHRONOUS	EQU	0100h
endif 
TIMECAPS	struct 
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
TIMECAPS	ends

PTIMECAPS typedef ptr TIMECAPS
NPTIMECAPS typedef ptr TIMECAPS
LPTIMECAPS typedef ptr TIMECAPS

@DefProto WINMMAPI, timeGetSystemTime, stdcall, , <:LPMMTIME, :DWORD>, 8
@DefProto WINMMAPI, timeGetTime, stdcall, , <>, 0
@DefProto WINMMAPI, timeSetEvent, stdcall, , <:DWORD, :DWORD, :LPTIMECALLBACK, :DWORD_PTR, :DWORD>, 20
@DefProto WINMMAPI, timeKillEvent, stdcall, , <:DWORD>, 4
@DefProto WINMMAPI, timeGetDevCaps, stdcall, , <:LPTIMECAPS, :DWORD>, 8
@DefProto WINMMAPI, timeBeginPeriod, stdcall, , <:DWORD>, 4
@DefProto WINMMAPI, timeEndPeriod, stdcall, , <:DWORD>, 4
endif 
ifndef MMNOJOY
JOYERR_NOERROR	EQU	0
JOYERR_PARMS	EQU	( JOYERR_BASE + 5 )
JOYERR_NOCANDO	EQU	( JOYERR_BASE + 6 )
JOYERR_UNPLUGGED	EQU	( JOYERR_BASE + 7 )
JOY_BUTTON1	EQU	0001h
JOY_BUTTON2	EQU	0002h
JOY_BUTTON3	EQU	0004h
JOY_BUTTON4	EQU	0008h
JOY_BUTTON1CHG	EQU	0100h
JOY_BUTTON2CHG	EQU	0200h
JOY_BUTTON3CHG	EQU	0400h
JOY_BUTTON4CHG	EQU	0800h
JOY_BUTTON5	EQU	00000010h
JOY_BUTTON6	EQU	00000020h
JOY_BUTTON7	EQU	00000040h
JOY_BUTTON8	EQU	00000080h
JOY_BUTTON9	EQU	00000100h
JOY_BUTTON10	EQU	00000200h
JOY_BUTTON11	EQU	00000400h
JOY_BUTTON12	EQU	00000800h
JOY_BUTTON13	EQU	00001000h
JOY_BUTTON14	EQU	00002000h
JOY_BUTTON15	EQU	00004000h
JOY_BUTTON16	EQU	00008000h
JOY_BUTTON17	EQU	00010000h
JOY_BUTTON18	EQU	00020000h
JOY_BUTTON19	EQU	00040000h
JOY_BUTTON20	EQU	00080000h
JOY_BUTTON21	EQU	00100000h
JOY_BUTTON22	EQU	00200000h
JOY_BUTTON23	EQU	00400000h
JOY_BUTTON24	EQU	00800000h
JOY_BUTTON25	EQU	01000000h
JOY_BUTTON26	EQU	02000000h
JOY_BUTTON27	EQU	04000000h
JOY_BUTTON28	EQU	08000000h
JOY_BUTTON29	EQU	10000000h
JOY_BUTTON30	EQU	20000000h
JOY_BUTTON31	EQU	40000000h
JOY_BUTTON32	EQU	80000000h
JOY_POVCENTERED	EQU	- 1
JOY_POVFORWARD	EQU	0
JOY_POVRIGHT	EQU	9000
JOY_POVBACKWARD	EQU	18000
JOY_POVLEFT	EQU	27000
JOY_RETURNX	EQU	00000001h
JOY_RETURNY	EQU	00000002h
JOY_RETURNZ	EQU	00000004h
JOY_RETURNR	EQU	00000008h
JOY_RETURNU	EQU	00000010h
JOY_RETURNV	EQU	00000020h
JOY_RETURNPOV	EQU	00000040h
JOY_RETURNBUTTONS	EQU	00000080h
JOY_RETURNRAWDATA	EQU	00000100h
JOY_RETURNPOVCTS	EQU	00000200h
JOY_RETURNCENTERED	EQU	00000400h
JOY_USEDEADZONE	EQU	00000800h
JOY_RETURNALL	EQU	( JOY_RETURNX  or  JOY_RETURNY  or  JOY_RETURNZ  or  JOY_RETURNR  or  JOY_RETURNU  or  JOY_RETURNV  or  JOY_RETURNPOV  or  JOY_RETURNBUTTONS )
JOY_CAL_READALWAYS	EQU	00010000h
JOY_CAL_READXYONLY	EQU	00020000h
JOY_CAL_READ3	EQU	00040000h
JOY_CAL_READ4	EQU	00080000h
JOY_CAL_READXONLY	EQU	00100000h
JOY_CAL_READYONLY	EQU	00200000h
JOY_CAL_READ5	EQU	00400000h
JOY_CAL_READ6	EQU	00800000h
JOY_CAL_READZONLY	EQU	01000000h
JOY_CAL_READRONLY	EQU	02000000h
JOY_CAL_READUONLY	EQU	04000000h
JOY_CAL_READVONLY	EQU	08000000h
JOYSTICKID1	EQU	0
JOYSTICKID2	EQU	1
JOYCAPS_HASZ	EQU	0001h
JOYCAPS_HASR	EQU	0002h
JOYCAPS_HASU	EQU	0004h
JOYCAPS_HASV	EQU	0008h
JOYCAPS_HASPOV	EQU	0010h
JOYCAPS_POV4DIR	EQU	0020h
JOYCAPS_POVCTS	EQU	0040h
ifdef _WIN32
JOYCAPSA	struct 
wMid	WORD	?
wPid	WORD	?
szPname	CHAR MAXPNAMELEN dup (?)
wXmin	DWORD	?
wXmax	DWORD	?
wYmin	DWORD	?
wYmax	DWORD	?
wZmin	DWORD	?
wZmax	DWORD	?
wNumButtons	DWORD	?
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
if (WINVER ge 0400h)
wRmin	DWORD	?
wRmax	DWORD	?
wUmin	DWORD	?
wUmax	DWORD	?
wVmin	DWORD	?
wVmax	DWORD	?
wCaps	DWORD	?
wMaxAxes	DWORD	?
wNumAxes	DWORD	?
wMaxButtons	DWORD	?
szRegKey	CHAR MAXPNAMELEN dup (?)
szOEMVxD	CHAR MAX_JOYSTICKOEMVXDNAME dup (?)
endif 
JOYCAPSA	ends

PJOYCAPSA typedef ptr JOYCAPSA
NPJOYCAPSA typedef ptr JOYCAPSA
LPJOYCAPSA typedef ptr JOYCAPSA

JOYCAPSW	struct 
wMid	WORD	?
wPid	WORD	?
szPname	WCHAR MAXPNAMELEN dup (?)
wXmin	DWORD	?
wXmax	DWORD	?
wYmin	DWORD	?
wYmax	DWORD	?
wZmin	DWORD	?
wZmax	DWORD	?
wNumButtons	DWORD	?
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
if (WINVER ge 0400h)
wRmin	DWORD	?
wRmax	DWORD	?
wUmin	DWORD	?
wUmax	DWORD	?
wVmin	DWORD	?
wVmax	DWORD	?
wCaps	DWORD	?
wMaxAxes	DWORD	?
wNumAxes	DWORD	?
wMaxButtons	DWORD	?
szRegKey	WCHAR MAXPNAMELEN dup (?)
szOEMVxD	WCHAR MAX_JOYSTICKOEMVXDNAME dup (?)
endif 
JOYCAPSW	ends

PJOYCAPSW typedef ptr JOYCAPSW
NPJOYCAPSW typedef ptr JOYCAPSW
LPJOYCAPSW typedef ptr JOYCAPSW

ifdef UNICODE
JOYCAPS typedef JOYCAPSW
PJOYCAPS typedef PJOYCAPSW
NPJOYCAPS typedef NPJOYCAPSW
LPJOYCAPS typedef LPJOYCAPSW
else 
JOYCAPS typedef JOYCAPSA
PJOYCAPS typedef PJOYCAPSA
NPJOYCAPS typedef NPJOYCAPSA
LPJOYCAPS typedef LPJOYCAPSA
endif 
JOYCAPS2A	struct 
wMid	WORD	?
wPid	WORD	?
szPname	CHAR MAXPNAMELEN dup (?)
wXmin	DWORD	?
wXmax	DWORD	?
wYmin	DWORD	?
wYmax	DWORD	?
wZmin	DWORD	?
wZmax	DWORD	?
wNumButtons	DWORD	?
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
wRmin	DWORD	?
wRmax	DWORD	?
wUmin	DWORD	?
wUmax	DWORD	?
wVmin	DWORD	?
wVmax	DWORD	?
wCaps	DWORD	?
wMaxAxes	DWORD	?
wNumAxes	DWORD	?
wMaxButtons	DWORD	?
szRegKey	CHAR MAXPNAMELEN dup (?)
szOEMVxD	CHAR MAX_JOYSTICKOEMVXDNAME dup (?)
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
JOYCAPS2A	ends

PJOYCAPS2A typedef ptr JOYCAPS2A
NPJOYCAPS2A typedef ptr JOYCAPS2A
LPJOYCAPS2A typedef ptr JOYCAPS2A

JOYCAPS2W	struct 
wMid	WORD	?
wPid	WORD	?
szPname	WCHAR MAXPNAMELEN dup (?)
wXmin	DWORD	?
wXmax	DWORD	?
wYmin	DWORD	?
wYmax	DWORD	?
wZmin	DWORD	?
wZmax	DWORD	?
wNumButtons	DWORD	?
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
wRmin	DWORD	?
wRmax	DWORD	?
wUmin	DWORD	?
wUmax	DWORD	?
wVmin	DWORD	?
wVmax	DWORD	?
wCaps	DWORD	?
wMaxAxes	DWORD	?
wNumAxes	DWORD	?
wMaxButtons	DWORD	?
szRegKey	WCHAR MAXPNAMELEN dup (?)
szOEMVxD	WCHAR MAX_JOYSTICKOEMVXDNAME dup (?)
ManufacturerGuid	GUID	<>
ProductGuid	GUID	<>
NameGuid	GUID	<>
JOYCAPS2W	ends

PJOYCAPS2W typedef ptr JOYCAPS2W
NPJOYCAPS2W typedef ptr JOYCAPS2W
LPJOYCAPS2W typedef ptr JOYCAPS2W

ifdef UNICODE
JOYCAPS2 typedef JOYCAPS2W
PJOYCAPS2 typedef PJOYCAPS2W
NPJOYCAPS2 typedef NPJOYCAPS2W
LPJOYCAPS2 typedef LPJOYCAPS2W
else 
JOYCAPS2 typedef JOYCAPS2A
PJOYCAPS2 typedef PJOYCAPS2A
NPJOYCAPS2 typedef NPJOYCAPS2A
LPJOYCAPS2 typedef LPJOYCAPS2A
endif 
else 
JOYCAPS	struct 
wMid	WORD	?
wPid	WORD	?
szPname	SBYTE MAXPNAMELEN dup (?)
wXmin	DWORD	?
wXmax	DWORD	?
wYmin	DWORD	?
wYmax	DWORD	?
wZmin	DWORD	?
wZmax	DWORD	?
wNumButtons	DWORD	?
wPeriodMin	DWORD	?
wPeriodMax	DWORD	?
if (WINVER ge 0400h)
wRmin	DWORD	?
wRmax	DWORD	?
wUmin	DWORD	?
wUmax	DWORD	?
wVmin	DWORD	?
wVmax	DWORD	?
wCaps	DWORD	?
wMaxAxes	DWORD	?
wNumAxes	DWORD	?
wMaxButtons	DWORD	?
szRegKey	SBYTE MAXPNAMELEN dup (?)
szOEMVxD	SBYTE MAX_JOYSTICKOEMVXDNAME dup (?)
endif 
JOYCAPS	ends

PJOYCAPS typedef ptr JOYCAPS
NPJOYCAPS typedef ptr JOYCAPS
LPJOYCAPS typedef ptr JOYCAPS

endif 
JOYINFO	struct 
wXpos	DWORD	?
wYpos	DWORD	?
wZpos	DWORD	?
wButtons	DWORD	?
JOYINFO	ends

PJOYINFO typedef ptr JOYINFO
NPJOYINFO typedef ptr JOYINFO
LPJOYINFO typedef ptr JOYINFO

if (WINVER ge 0400h)
JOYINFOEX	struct 
dwSize	DWORD	?
dwFlags	DWORD	?
dwXpos	DWORD	?
dwYpos	DWORD	?
dwZpos	DWORD	?
dwRpos	DWORD	?
dwUpos	DWORD	?
dwVpos	DWORD	?
dwButtons	DWORD	?
dwButtonNumber	DWORD	?
dwPOV	DWORD	?
dwReserved1	DWORD	?
dwReserved2	DWORD	?
JOYINFOEX	ends

PJOYINFOEX typedef ptr JOYINFOEX
NPJOYINFOEX typedef ptr JOYINFOEX
LPJOYINFOEX typedef ptr JOYINFOEX

endif 
@DefProto WINMMAPI, joyGetNumDevs, stdcall, , <>, 0
ifdef _WIN32
@DefProto WINMMAPI, joyGetDevCapsA, stdcall, , <:UINT_PTR, :LPJOYCAPSA, :DWORD>, 12
@DefProto WINMMAPI, joyGetDevCapsW, stdcall, , <:UINT_PTR, :LPJOYCAPSW, :DWORD>, 12
ifdef UNICODE
joyGetDevCaps	EQU	<joyGetDevCapsW>
else 
joyGetDevCaps	EQU	<joyGetDevCapsA>
endif 
else 
joyGetDevCaps proto WINSTDCALLCONV :DWORD, :LPJOYCAPS, :DWORD
endif 
@DefProto WINMMAPI, joyGetPos, stdcall, , <:DWORD, :LPJOYINFO>, 8
if (WINVER ge 0400h)
@DefProto WINMMAPI, joyGetPosEx, stdcall, , <:DWORD, :LPJOYINFOEX>, 8
endif 
@DefProto WINMMAPI, joyGetThreshold, stdcall, , <:DWORD, :LPUINT>, 8
@DefProto WINMMAPI, joyReleaseCapture, stdcall, , <:DWORD>, 4
@DefProto WINMMAPI, joySetCapture, stdcall, , <:HWND, :DWORD, :DWORD, :BOOL>, 16
@DefProto WINMMAPI, joySetThreshold, stdcall, , <:DWORD, :DWORD>, 8
endif 
ifndef MMNOMMIO
MMIOERR_BASE	EQU	256
MMIOERR_FILENOTFOUND	EQU	( MMIOERR_BASE + 1 )
MMIOERR_OUTOFMEMORY	EQU	( MMIOERR_BASE + 2 )
MMIOERR_CANNOTOPEN	EQU	( MMIOERR_BASE + 3 )
MMIOERR_CANNOTCLOSE	EQU	( MMIOERR_BASE + 4 )
MMIOERR_CANNOTREAD	EQU	( MMIOERR_BASE + 5 )
MMIOERR_CANNOTWRITE	EQU	( MMIOERR_BASE + 6 )
MMIOERR_CANNOTSEEK	EQU	( MMIOERR_BASE + 7 )
MMIOERR_CANNOTEXPAND	EQU	( MMIOERR_BASE + 8 )
MMIOERR_CHUNKNOTFOUND	EQU	( MMIOERR_BASE + 9 )
MMIOERR_UNBUFFERED	EQU	( MMIOERR_BASE + 10 )
MMIOERR_PATHNOTFOUND	EQU	( MMIOERR_BASE + 11 )
MMIOERR_ACCESSDENIED	EQU	( MMIOERR_BASE + 12 )
MMIOERR_SHARINGVIOLATION	EQU	( MMIOERR_BASE + 13 )
MMIOERR_NETWORKERROR	EQU	( MMIOERR_BASE + 14 )
MMIOERR_TOOMANYOPENFILES	EQU	( MMIOERR_BASE + 15 )
MMIOERR_INVALIDFILE	EQU	( MMIOERR_BASE + 16 )
CFSEPCHAR	EQU	<' + '>
FOURCC typedef DWORD
HPSTR typedef ptr SBYTE
DECLARE_HANDLE( HMMIO)
proto_MMIOPROC typedef proto WINSTDCALLCONV :LPSTR,:DWORD,:LPARAM,:LPARAM
MMIOPROC typedef ptr proto_MMIOPROC
LPMMIOPROC typedef ptr MMIOPROC
MMIOINFO	struct 
dwFlags	DWORD	?
fccIOProc	FOURCC	?
pIOProc	LPMMIOPROC	?
wErrorRet	DWORD	?
htask	HTASK	?
cchBuffer	SDWORD	?
pchBuffer	HPSTR	?
pchNext	HPSTR	?
pchEndRead	HPSTR	?
pchEndWrite	HPSTR	?
lBufOffset	SDWORD	?
lDiskOffset	SDWORD	?
adwInfo	DWORD 3 dup (?)
dwReserved1	DWORD	?
dwReserved2	DWORD	?
hmmio	HMMIO	?
MMIOINFO	ends

PMMIOINFO typedef ptr MMIOINFO
NPMMIOINFO typedef ptr MMIOINFO
LPMMIOINFO typedef ptr MMIOINFO

LPCMMIOINFO typedef ptr MMIOINFO
MMCKINFO	struct 
ckid	FOURCC	?
cksize	DWORD	?
fccType	FOURCC	?
dwDataOffset	DWORD	?
dwFlags	DWORD	?
MMCKINFO	ends

PMMCKINFO typedef ptr MMCKINFO
NPMMCKINFO typedef ptr MMCKINFO
LPMMCKINFO typedef ptr MMCKINFO

LPCMMCKINFO typedef ptr MMCKINFO
MMIO_RWMODE	EQU	00000003h
MMIO_SHAREMODE	EQU	00000070h
MMIO_CREATE	EQU	00001000h
MMIO_PARSE	EQU	00000100h
MMIO_DELETE	EQU	00000200h
MMIO_EXIST	EQU	00004000h
MMIO_ALLOCBUF	EQU	00010000h
MMIO_GETTEMP	EQU	00020000h
MMIO_DIRTY	EQU	10000000h
MMIO_READ	EQU	00000000h
MMIO_WRITE	EQU	00000001h
MMIO_READWRITE	EQU	00000002h
MMIO_COMPAT	EQU	00000000h
MMIO_EXCLUSIVE	EQU	00000010h
MMIO_DENYWRITE	EQU	00000020h
MMIO_DENYREAD	EQU	00000030h
MMIO_DENYNONE	EQU	00000040h
MMIO_FHOPEN	EQU	0010h
MMIO_EMPTYBUF	EQU	0010h
MMIO_TOUPPER	EQU	0010h
MMIO_INSTALLPROC	EQU	00010000h
MMIO_GLOBALPROC	EQU	10000000h
MMIO_REMOVEPROC	EQU	00020000h
MMIO_UNICODEPROC	EQU	01000000h
MMIO_FINDPROC	EQU	00040000h
MMIO_FINDCHUNK	EQU	0010h
MMIO_FINDRIFF	EQU	0020h
MMIO_FINDLIST	EQU	0040h
MMIO_CREATERIFF	EQU	0020h
MMIO_CREATELIST	EQU	0040h
MMIOM_READ	EQU	<MMIO_READ>
MMIOM_WRITE	EQU	<MMIO_WRITE>
MMIOM_SEEK	EQU	2
MMIOM_OPEN	EQU	3
MMIOM_CLOSE	EQU	4
MMIOM_WRITEFLUSH	EQU	5
if (WINVER ge 030ah)
MMIOM_RENAME	EQU	6
endif 
MMIOM_USER	EQU	8000h
FOURCC_RIFF	EQU	<mmioFOURCC ( 'R' , 'I' , 'F' , 'F' )>
FOURCC_LIST	EQU	<mmioFOURCC ( 'L' , 'I' , 'S' , 'T' )>
FOURCC_DOS	EQU	<mmioFOURCC ( 'D' , 'O' , 'S' , ' ' )>
FOURCC_MEM	EQU	<mmioFOURCC ( 'M' , 'E' , 'M' , ' ' )>
ifndef SEEK_SET
SEEK_SET	EQU	0
SEEK_CUR	EQU	1
SEEK_END	EQU	2
endif 
MMIO_DEFAULTBUFFER	EQU	8192
mmioFOURCC macro ch0,ch1,ch2,ch3
	exitm <MAKEFOURCC ( ch0 , ch1 , ch2 , ch3 ) >
	endm
ifdef _WIN32
@DefProto WINMMAPI, mmioStringToFOURCCA, stdcall, , <:LPSTR, :DWORD>, 8
@DefProto WINMMAPI, mmioStringToFOURCCW, stdcall, , <:LPWSTR, :DWORD>, 8
ifdef UNICODE
mmioStringToFOURCC	EQU	<mmioStringToFOURCCW>
else 
mmioStringToFOURCC	EQU	<mmioStringToFOURCCA>
endif 
@DefProto WINMMAPI, mmioInstallIOProcA, stdcall, , <:FOURCC, :LPMMIOPROC, :DWORD>, 12
@DefProto WINMMAPI, mmioInstallIOProcW, stdcall, , <:FOURCC, :LPMMIOPROC, :DWORD>, 12
ifdef UNICODE
mmioInstallIOProc	EQU	<mmioInstallIOProcW>
else 
mmioInstallIOProc	EQU	<mmioInstallIOProcA>
endif 
@DefProto WINMMAPI, mmioOpenA, stdcall, , <:LPSTR, :LPMMIOINFO, :DWORD>, 12
@DefProto WINMMAPI, mmioOpenW, stdcall, , <:LPWSTR, :LPMMIOINFO, :DWORD>, 12
ifdef UNICODE
mmioOpen	EQU	<mmioOpenW>
else 
mmioOpen	EQU	<mmioOpenA>
endif 
@DefProto WINMMAPI, mmioRenameA, stdcall, , <:LPSTR, :LPSTR, :LPCMMIOINFO, :DWORD>, 16
@DefProto WINMMAPI, mmioRenameW, stdcall, , <:LPWSTR, :LPWSTR, :LPCMMIOINFO, :DWORD>, 16
ifdef UNICODE
mmioRename	EQU	<mmioRenameW>
else 
mmioRename	EQU	<mmioRenameA>
endif 
else 
mmioStringToFOURCC proto WINSTDCALLCONV :LPSTR, :DWORD
mmioInstallIOProc proto WINSTDCALLCONV :FOURCC, :LPMMIOPROC, :DWORD
mmioOpen proto WINSTDCALLCONV :LPSTR, :LPMMIOINFO, :DWORD
if (WINVER ge 030ah)
mmioRename proto WINSTDCALLCONV :LPSTR, :LPSTR, :ptr MMIOINFO, :DWORD
endif 
endif 
@DefProto WINMMAPI, mmioClose, stdcall, , <:HMMIO, :DWORD>, 8
@DefProto WINMMAPI, mmioRead, stdcall, , <:HMMIO, :HPSTR, :SDWORD>, 12
@DefProto WINMMAPI, mmioWrite, stdcall, , <:HMMIO, :ptr _huge, :SDWORD>, 12
@DefProto WINMMAPI, mmioSeek, stdcall, , <:HMMIO, :SDWORD, :DWORD>, 12
@DefProto WINMMAPI, mmioGetInfo, stdcall, , <:HMMIO, :LPMMIOINFO, :DWORD>, 12
@DefProto WINMMAPI, mmioSetInfo, stdcall, , <:HMMIO, :LPCMMIOINFO, :DWORD>, 12
@DefProto WINMMAPI, mmioSetBuffer, stdcall, , <:HMMIO, :LPSTR, :SDWORD, :DWORD>, 16
@DefProto WINMMAPI, mmioFlush, stdcall, , <:HMMIO, :DWORD>, 8
@DefProto WINMMAPI, mmioAdvance, stdcall, , <:HMMIO, :LPMMIOINFO, :DWORD>, 12
@DefProto WINMMAPI, mmioSendMessage, stdcall, , <:HMMIO, :DWORD, :LPARAM, :LPARAM>, 16
@DefProto WINMMAPI, mmioDescend, stdcall, , <:HMMIO, :LPMMCKINFO, :ptr MMCKINFO, :DWORD>, 16
@DefProto WINMMAPI, mmioAscend, stdcall, , <:HMMIO, :LPMMCKINFO, :DWORD>, 12
@DefProto WINMMAPI, mmioCreateChunk, stdcall, , <:HMMIO, :LPMMCKINFO, :DWORD>, 12
endif 
ifndef MMNOMCI
ifndef _MCIERROR_
_MCIERROR_	EQU	<>
MCIERROR typedef DWORD
endif 
ifndef _MCIDEVICEID_
_MCIDEVICEID_	EQU	<>
MCIDEVICEID typedef DWORD
endif 
proto_YIELDPROC typedef proto WINSTDCALLCONV :MCIDEVICEID,:DWORD
YIELDPROC typedef ptr proto_YIELDPROC
ifdef _WIN32
@DefProto WINMMAPI, mciSendCommandA, stdcall, , <:MCIDEVICEID, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
@DefProto WINMMAPI, mciSendCommandW, stdcall, , <:MCIDEVICEID, :DWORD, :DWORD_PTR, :DWORD_PTR>, 16
ifdef UNICODE
mciSendCommand	EQU	<mciSendCommandW>
else 
mciSendCommand	EQU	<mciSendCommandA>
endif 
@DefProto WINMMAPI, mciSendStringA, stdcall, , <:LPSTR, :LPSTR, :DWORD, :HWND>, 16
@DefProto WINMMAPI, mciSendStringW, stdcall, , <:LPWSTR, :LPWSTR, :DWORD, :HWND>, 16
ifdef UNICODE
mciSendString	EQU	<mciSendStringW>
else 
mciSendString	EQU	<mciSendStringA>
endif 
@DefProto WINMMAPI, mciGetDeviceIDA, stdcall, , <:LPSTR>, 4
@DefProto WINMMAPI, mciGetDeviceIDW, stdcall, , <:LPWSTR>, 4
ifdef UNICODE
mciGetDeviceID	EQU	<mciGetDeviceIDW>
else 
mciGetDeviceID	EQU	<mciGetDeviceIDA>
endif 
@DefProto WINMMAPI, mciGetDeviceIDFromElementIDA, stdcall, , <:DWORD, :LPSTR>, 8
@DefProto WINMMAPI, mciGetDeviceIDFromElementIDW, stdcall, , <:DWORD, :LPWSTR>, 8
ifdef UNICODE
mciGetDeviceIDFromElementID	EQU	<mciGetDeviceIDFromElementIDW>
else 
mciGetDeviceIDFromElementID	EQU	<mciGetDeviceIDFromElementIDA>
endif 
@DefProto WINMMAPI, mciGetErrorStringA, stdcall, , <:MCIERROR, :LPSTR, :DWORD>, 12
@DefProto WINMMAPI, mciGetErrorStringW, stdcall, , <:MCIERROR, :LPWSTR, :DWORD>, 12
ifdef UNICODE
mciGetErrorString	EQU	<mciGetErrorStringW>
else 
mciGetErrorString	EQU	<mciGetErrorStringA>
endif 
else 
mciSendCommand proto WINSTDCALLCONV :MCIDEVICEID, :DWORD, :DWORD, :DWORD
mciSendString proto WINSTDCALLCONV :LPSTR, :LPSTR, :DWORD, :HWND
mciGetDeviceID proto WINSTDCALLCONV :LPSTR
mciGetErrorString proto WINSTDCALLCONV :MCIERROR, :LPSTR, :DWORD
endif 
@DefProto WINMMAPI, mciSetYieldProc, stdcall, , <:MCIDEVICEID, :YIELDPROC, :DWORD>, 12
if (WINVER ge 030ah)
@DefProto WINMMAPI, mciGetCreatorTask, stdcall, , <:MCIDEVICEID>, 4
@DefProto WINMMAPI, mciGetYieldProc, stdcall, , <:MCIDEVICEID, :LPDWORD>, 8
endif 
if (WINVER lt 030ah)
@DefProto WINMMAPI, mciExecute, stdcall, , <:LPSTR>, 4
endif 
MCIERR_INVALID_DEVICE_ID	EQU	( MCIERR_BASE + 1 )
MCIERR_UNRECOGNIZED_KEYWORD	EQU	( MCIERR_BASE + 3 )
MCIERR_UNRECOGNIZED_COMMAND	EQU	( MCIERR_BASE + 5 )
MCIERR_HARDWARE	EQU	( MCIERR_BASE + 6 )
MCIERR_INVALID_DEVICE_NAME	EQU	( MCIERR_BASE + 7 )
MCIERR_OUT_OF_MEMORY	EQU	( MCIERR_BASE + 8 )
MCIERR_DEVICE_OPEN	EQU	( MCIERR_BASE + 9 )
MCIERR_CANNOT_LOAD_DRIVER	EQU	( MCIERR_BASE + 10 )
MCIERR_MISSING_COMMAND_STRING	EQU	( MCIERR_BASE + 11 )
MCIERR_PARAM_OVERFLOW	EQU	( MCIERR_BASE + 12 )
MCIERR_MISSING_STRING_ARGUMENT	EQU	( MCIERR_BASE + 13 )
MCIERR_BAD_INTEGER	EQU	( MCIERR_BASE + 14 )
MCIERR_PARSER_INTERNAL	EQU	( MCIERR_BASE + 15 )
MCIERR_DRIVER_INTERNAL	EQU	( MCIERR_BASE + 16 )
MCIERR_MISSING_PARAMETER	EQU	( MCIERR_BASE + 17 )
MCIERR_UNSUPPORTED_FUNCTION	EQU	( MCIERR_BASE + 18 )
MCIERR_FILE_NOT_FOUND	EQU	( MCIERR_BASE + 19 )
MCIERR_DEVICE_NOT_READY	EQU	( MCIERR_BASE + 20 )
MCIERR_INTERNAL	EQU	( MCIERR_BASE + 21 )
MCIERR_DRIVER	EQU	( MCIERR_BASE + 22 )
MCIERR_CANNOT_USE_ALL	EQU	( MCIERR_BASE + 23 )
MCIERR_MULTIPLE	EQU	( MCIERR_BASE + 24 )
MCIERR_EXTENSION_NOT_FOUND	EQU	( MCIERR_BASE + 25 )
MCIERR_OUTOFRANGE	EQU	( MCIERR_BASE + 26 )
MCIERR_FLAGS_NOT_COMPATIBLE	EQU	( MCIERR_BASE + 28 )
MCIERR_FILE_NOT_SAVED	EQU	( MCIERR_BASE + 30 )
MCIERR_DEVICE_TYPE_REQUIRED	EQU	( MCIERR_BASE + 31 )
MCIERR_DEVICE_LOCKED	EQU	( MCIERR_BASE + 32 )
MCIERR_DUPLICATE_ALIAS	EQU	( MCIERR_BASE + 33 )
MCIERR_BAD_CONSTANT	EQU	( MCIERR_BASE + 34 )
MCIERR_MUST_USE_SHAREABLE	EQU	( MCIERR_BASE + 35 )
MCIERR_MISSING_DEVICE_NAME	EQU	( MCIERR_BASE + 36 )
MCIERR_BAD_TIME_FORMAT	EQU	( MCIERR_BASE + 37 )
MCIERR_NO_CLOSING_QUOTE	EQU	( MCIERR_BASE + 38 )
MCIERR_DUPLICATE_FLAGS	EQU	( MCIERR_BASE + 39 )
MCIERR_INVALID_FILE	EQU	( MCIERR_BASE + 40 )
MCIERR_NULL_PARAMETER_BLOCK	EQU	( MCIERR_BASE + 41 )
MCIERR_UNNAMED_RESOURCE	EQU	( MCIERR_BASE + 42 )
MCIERR_NEW_REQUIRES_ALIAS	EQU	( MCIERR_BASE + 43 )
MCIERR_NOTIFY_ON_AUTO_OPEN	EQU	( MCIERR_BASE + 44 )
MCIERR_NO_ELEMENT_ALLOWED	EQU	( MCIERR_BASE + 45 )
MCIERR_NONAPPLICABLE_FUNCTION	EQU	( MCIERR_BASE + 46 )
MCIERR_ILLEGAL_FOR_AUTO_OPEN	EQU	( MCIERR_BASE + 47 )
MCIERR_FILENAME_REQUIRED	EQU	( MCIERR_BASE + 48 )
MCIERR_EXTRA_CHARACTERS	EQU	( MCIERR_BASE + 49 )
MCIERR_DEVICE_NOT_INSTALLED	EQU	( MCIERR_BASE + 50 )
MCIERR_GET_CD	EQU	( MCIERR_BASE + 51 )
MCIERR_SET_CD	EQU	( MCIERR_BASE + 52 )
MCIERR_SET_DRIVE	EQU	( MCIERR_BASE + 53 )
MCIERR_DEVICE_LENGTH	EQU	( MCIERR_BASE + 54 )
MCIERR_DEVICE_ORD_LENGTH	EQU	( MCIERR_BASE + 55 )
MCIERR_NO_INTEGER	EQU	( MCIERR_BASE + 56 )
MCIERR_WAVE_OUTPUTSINUSE	EQU	( MCIERR_BASE + 64 )
MCIERR_WAVE_SETOUTPUTINUSE	EQU	( MCIERR_BASE + 65 )
MCIERR_WAVE_INPUTSINUSE	EQU	( MCIERR_BASE + 66 )
MCIERR_WAVE_SETINPUTINUSE	EQU	( MCIERR_BASE + 67 )
MCIERR_WAVE_OUTPUTUNSPECIFIED	EQU	( MCIERR_BASE + 68 )
MCIERR_WAVE_INPUTUNSPECIFIED	EQU	( MCIERR_BASE + 69 )
MCIERR_WAVE_OUTPUTSUNSUITABLE	EQU	( MCIERR_BASE + 70 )
MCIERR_WAVE_SETOUTPUTUNSUITABLE	EQU	( MCIERR_BASE + 71 )
MCIERR_WAVE_INPUTSUNSUITABLE	EQU	( MCIERR_BASE + 72 )
MCIERR_WAVE_SETINPUTUNSUITABLE	EQU	( MCIERR_BASE + 73 )
MCIERR_SEQ_DIV_INCOMPATIBLE	EQU	( MCIERR_BASE + 80 )
MCIERR_SEQ_PORT_INUSE	EQU	( MCIERR_BASE + 81 )
MCIERR_SEQ_PORT_NONEXISTENT	EQU	( MCIERR_BASE + 82 )
MCIERR_SEQ_PORT_MAPNODEVICE	EQU	( MCIERR_BASE + 83 )
MCIERR_SEQ_PORT_MISCERROR	EQU	( MCIERR_BASE + 84 )
MCIERR_SEQ_TIMER	EQU	( MCIERR_BASE + 85 )
MCIERR_SEQ_PORTUNSPECIFIED	EQU	( MCIERR_BASE + 86 )
MCIERR_SEQ_NOMIDIPRESENT	EQU	( MCIERR_BASE + 87 )
MCIERR_NO_WINDOW	EQU	( MCIERR_BASE + 90 )
MCIERR_CREATEWINDOW	EQU	( MCIERR_BASE + 91 )
MCIERR_FILE_READ	EQU	( MCIERR_BASE + 92 )
MCIERR_FILE_WRITE	EQU	( MCIERR_BASE + 93 )
MCIERR_NO_IDENTITY	EQU	( MCIERR_BASE + 94 )
MCIERR_CUSTOM_DRIVER_BASE	EQU	( MCIERR_BASE + 256 )
MCI_FIRST	EQU	<DRV_MCI_FIRST>
MCI_OPEN	EQU	0803h
MCI_CLOSE	EQU	0804h
MCI_ESCAPE	EQU	0805h
MCI_PLAY	EQU	0806h
MCI_SEEK	EQU	0807h
MCI_STOP	EQU	0808h
MCI_PAUSE	EQU	0809h
MCI_INFO	EQU	080Ah
MCI_GETDEVCAPS	EQU	080Bh
MCI_SPIN	EQU	080Ch
MCI_SET	EQU	080Dh
MCI_STEP	EQU	080Eh
MCI_RECORD	EQU	080Fh
MCI_SYSINFO	EQU	0810h
MCI_BREAK	EQU	0811h
MCI_SAVE	EQU	0813h
MCI_STATUS	EQU	0814h
MCI_CUE	EQU	0830h
MCI_REALIZE	EQU	0840h
MCI_WINDOW	EQU	0841h
MCI_PUT	EQU	0842h
MCI_WHERE	EQU	0843h
MCI_FREEZE	EQU	0844h
MCI_UNFREEZE	EQU	0845h
MCI_LOAD	EQU	0850h
MCI_CUT	EQU	0851h
MCI_COPY	EQU	0852h
MCI_PASTE	EQU	0853h
MCI_UPDATE	EQU	0854h
MCI_RESUME	EQU	0855h
MCI_DELETE	EQU	0856h
MCI_USER_MESSAGES	EQU	( DRV_MCI_FIRST + 400h )
MCI_LAST	EQU	0FFFh
MCI_ALL_DEVICE_ID	EQU	( ( MCIDEVICEID ) - 1 )
MCI_DEVTYPE_VCR	EQU	513
MCI_DEVTYPE_VIDEODISC	EQU	514
MCI_DEVTYPE_OVERLAY	EQU	515
MCI_DEVTYPE_CD_AUDIO	EQU	516
MCI_DEVTYPE_DAT	EQU	517
MCI_DEVTYPE_SCANNER	EQU	518
MCI_DEVTYPE_ANIMATION	EQU	519
MCI_DEVTYPE_DIGITAL_VIDEO	EQU	520
MCI_DEVTYPE_OTHER	EQU	521
MCI_DEVTYPE_WAVEFORM_AUDIO	EQU	522
MCI_DEVTYPE_SEQUENCER	EQU	523
MCI_DEVTYPE_FIRST	EQU	<MCI_DEVTYPE_VCR>
MCI_DEVTYPE_LAST	EQU	<MCI_DEVTYPE_SEQUENCER>
MCI_DEVTYPE_FIRST_USER	EQU	1000h
MCI_MODE_NOT_READY	EQU	( MCI_STRING_OFFSET + 12 )
MCI_MODE_STOP	EQU	( MCI_STRING_OFFSET + 13 )
MCI_MODE_PLAY	EQU	( MCI_STRING_OFFSET + 14 )
MCI_MODE_RECORD	EQU	( MCI_STRING_OFFSET + 15 )
MCI_MODE_SEEK	EQU	( MCI_STRING_OFFSET + 16 )
MCI_MODE_PAUSE	EQU	( MCI_STRING_OFFSET + 17 )
MCI_MODE_OPEN	EQU	( MCI_STRING_OFFSET + 18 )
MCI_FORMAT_MILLISECONDS	EQU	0
MCI_FORMAT_HMS	EQU	1
MCI_FORMAT_MSF	EQU	2
MCI_FORMAT_FRAMES	EQU	3
MCI_FORMAT_SMPTE_24	EQU	4
MCI_FORMAT_SMPTE_25	EQU	5
MCI_FORMAT_SMPTE_30	EQU	6
MCI_FORMAT_SMPTE_30DROP	EQU	7
MCI_FORMAT_BYTES	EQU	8
MCI_FORMAT_SAMPLES	EQU	9
MCI_FORMAT_TMSF	EQU	10
MCI_MSF_MINUTE macro msf
	exitm <( ( msf ) ) >
	endm
MCI_MSF_SECOND macro msf
	exitm <( ( ( ( msf ) )  shr  8 ) ) >
	endm
MCI_MSF_FRAME macro msf
	exitm <( ( ( msf )  shr  16 ) ) >
	endm
MCI_MAKE_MSF macro m,s,f
	exitm <( ( ( ( m )  or  ( ( s )  shl  8 ) )  or  ( ( ( f ) )  shl  16 ) ) ) >
	endm
MCI_TMSF_TRACK macro tmsf
	exitm <( ( tmsf ) ) >
	endm
MCI_TMSF_MINUTE macro tmsf
	exitm <( ( ( ( tmsf ) )  shr  8 ) ) >
	endm
MCI_TMSF_SECOND macro tmsf
	exitm <( ( ( tmsf )  shr  16 ) ) >
	endm
MCI_TMSF_FRAME macro tmsf
	exitm <( ( ( tmsf )  shr  24 ) ) >
	endm
MCI_MAKE_TMSF macro t,m,s,f
	exitm <( ( ( ( t )  or  ( ( m )  shl  8 ) )  or  ( ( ( s )  or  ( ( f )  shl  8 ) )  shl  16 ) ) ) >
	endm
MCI_HMS_HOUR macro hms
	exitm <( ( hms ) ) >
	endm
MCI_HMS_MINUTE macro hms
	exitm <( ( ( ( hms ) )  shr  8 ) ) >
	endm
MCI_HMS_SECOND macro hms
	exitm <( ( ( hms )  shr  16 ) ) >
	endm
MCI_MAKE_HMS macro h,m,s
	exitm <( ( ( ( h )  or  ( ( m )  shl  8 ) )  or  ( ( ( s ) )  shl  16 ) ) ) >
	endm
MCI_NOTIFY_SUCCESSFUL	EQU	0001h
MCI_NOTIFY_SUPERSEDED	EQU	0002h
MCI_NOTIFY_ABORTED	EQU	0004h
MCI_NOTIFY_FAILURE	EQU	0008h
MCI_NOTIFY	EQU	00000001h
MCI_WAIT	EQU	00000002h
MCI_FROM	EQU	00000004h
MCI_TO	EQU	00000008h
MCI_TRACK	EQU	00000010h
MCI_OPEN_SHAREABLE	EQU	00000100h
MCI_OPEN_ELEMENT	EQU	00000200h
MCI_OPEN_ALIAS	EQU	00000400h
MCI_OPEN_ELEMENT_ID	EQU	00000800h
MCI_OPEN_TYPE_ID	EQU	00001000h
MCI_OPEN_TYPE	EQU	00002000h
MCI_SEEK_TO_START	EQU	00000100h
MCI_SEEK_TO_END	EQU	00000200h
MCI_STATUS_ITEM	EQU	00000100h
MCI_STATUS_START	EQU	00000200h
MCI_STATUS_LENGTH	EQU	00000001h
MCI_STATUS_POSITION	EQU	00000002h
MCI_STATUS_NUMBER_OF_TRACKS	EQU	00000003h
MCI_STATUS_MODE	EQU	00000004h
MCI_STATUS_MEDIA_PRESENT	EQU	00000005h
MCI_STATUS_TIME_FORMAT	EQU	00000006h
MCI_STATUS_READY	EQU	00000007h
MCI_STATUS_CURRENT_TRACK	EQU	00000008h
MCI_INFO_PRODUCT	EQU	00000100h
MCI_INFO_FILE	EQU	00000200h
MCI_INFO_MEDIA_UPC	EQU	00000400h
MCI_INFO_MEDIA_IDENTITY	EQU	00000800h
MCI_INFO_NAME	EQU	00001000h
MCI_INFO_COPYRIGHT	EQU	00002000h
MCI_GETDEVCAPS_ITEM	EQU	00000100h
MCI_GETDEVCAPS_CAN_RECORD	EQU	00000001h
MCI_GETDEVCAPS_HAS_AUDIO	EQU	00000002h
MCI_GETDEVCAPS_HAS_VIDEO	EQU	00000003h
MCI_GETDEVCAPS_DEVICE_TYPE	EQU	00000004h
MCI_GETDEVCAPS_USES_FILES	EQU	00000005h
MCI_GETDEVCAPS_COMPOUND_DEVICE	EQU	00000006h
MCI_GETDEVCAPS_CAN_EJECT	EQU	00000007h
MCI_GETDEVCAPS_CAN_PLAY	EQU	00000008h
MCI_GETDEVCAPS_CAN_SAVE	EQU	00000009h
MCI_SYSINFO_QUANTITY	EQU	00000100h
MCI_SYSINFO_OPEN	EQU	00000200h
MCI_SYSINFO_NAME	EQU	00000400h
MCI_SYSINFO_INSTALLNAME	EQU	00000800h
MCI_SET_DOOR_OPEN	EQU	00000100h
MCI_SET_DOOR_CLOSED	EQU	00000200h
MCI_SET_TIME_FORMAT	EQU	00000400h
MCI_SET_AUDIO	EQU	00000800h
MCI_SET_VIDEO	EQU	00001000h
MCI_SET_ON	EQU	00002000h
MCI_SET_OFF	EQU	00004000h
MCI_SET_AUDIO_ALL	EQU	00000000h
MCI_SET_AUDIO_LEFT	EQU	00000001h
MCI_SET_AUDIO_RIGHT	EQU	00000002h
MCI_BREAK_KEY	EQU	00000100h
MCI_BREAK_HWND	EQU	00000200h
MCI_BREAK_OFF	EQU	00000400h
MCI_RECORD_INSERT	EQU	00000100h
MCI_RECORD_OVERWRITE	EQU	00000200h
MCI_SAVE_FILE	EQU	00000100h
MCI_LOAD_FILE	EQU	00000100h
MCI_GENERIC_PARMS	struct 
dwCallback	DWORD_PTR	?
MCI_GENERIC_PARMS	ends

PMCI_GENERIC_PARMS typedef ptr MCI_GENERIC_PARMS
LPMCI_GENERIC_PARMS typedef ptr MCI_GENERIC_PARMS

ifdef _WIN32
MCI_OPEN_PARMSA	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
MCI_OPEN_PARMSA	ends

PMCI_OPEN_PARMSA typedef ptr MCI_OPEN_PARMSA
LPMCI_OPEN_PARMSA typedef ptr MCI_OPEN_PARMSA

MCI_OPEN_PARMSW	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPWSTR	?
lpstrElementName	LPWSTR	?
lpstrAlias	LPWSTR	?
MCI_OPEN_PARMSW	ends

PMCI_OPEN_PARMSW typedef ptr MCI_OPEN_PARMSW
LPMCI_OPEN_PARMSW typedef ptr MCI_OPEN_PARMSW

ifdef UNICODE
MCI_OPEN_PARMS typedef MCI_OPEN_PARMSW
PMCI_OPEN_PARMS typedef PMCI_OPEN_PARMSW
LPMCI_OPEN_PARMS typedef LPMCI_OPEN_PARMSW
else 
MCI_OPEN_PARMS typedef MCI_OPEN_PARMSA
PMCI_OPEN_PARMS typedef PMCI_OPEN_PARMSA
LPMCI_OPEN_PARMS typedef LPMCI_OPEN_PARMSA
endif 
else 
MCI_OPEN_PARMS	struct 
dwCallback	DWORD	?
wDeviceID	MCIDEVICEID	?
wReserved0	WORD	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
MCI_OPEN_PARMS	ends

LPMCI_OPEN_PARMS typedef ptr MCI_OPEN_PARMS

endif 
MCI_PLAY_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrom	DWORD	?
dwTo	DWORD	?
MCI_PLAY_PARMS	ends

PMCI_PLAY_PARMS typedef ptr MCI_PLAY_PARMS
LPMCI_PLAY_PARMS typedef ptr MCI_PLAY_PARMS

MCI_SEEK_PARMS	struct 
dwCallback	DWORD_PTR	?
dwTo	DWORD	?
MCI_SEEK_PARMS	ends

PMCI_SEEK_PARMS typedef ptr MCI_SEEK_PARMS
LPMCI_SEEK_PARMS typedef ptr MCI_SEEK_PARMS

MCI_STATUS_PARMS	struct 
dwCallback	DWORD_PTR	?
dwReturn	DWORD_PTR	?
dwItem	DWORD	?
dwTrack	DWORD	?
MCI_STATUS_PARMS	ends

PMCI_STATUS_PARMS typedef ptr MCI_STATUS_PARMS
LPMCI_STATUS_PARMS typedef ptr MCI_STATUS_PARMS

ifdef _WIN32
MCI_INFO_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpstrReturn	LPSTR	?
dwRetSize	DWORD	?
MCI_INFO_PARMSA	ends

LPMCI_INFO_PARMSA typedef ptr MCI_INFO_PARMSA

MCI_INFO_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpstrReturn	LPWSTR	?
dwRetSize	DWORD	?
MCI_INFO_PARMSW	ends

LPMCI_INFO_PARMSW typedef ptr MCI_INFO_PARMSW

ifdef UNICODE
MCI_INFO_PARMS typedef MCI_INFO_PARMSW
LPMCI_INFO_PARMS typedef LPMCI_INFO_PARMSW
else 
MCI_INFO_PARMS typedef MCI_INFO_PARMSA
LPMCI_INFO_PARMS typedef LPMCI_INFO_PARMSA
endif 
else 
MCI_INFO_PARMS	struct 
dwCallback	DWORD	?
lpstrReturn	LPSTR	?
dwRetSize	DWORD	?
MCI_INFO_PARMS	ends

LPMCI_INFO_PARMS typedef ptr MCI_INFO_PARMS

endif 
MCI_GETDEVCAPS_PARMS	struct 
dwCallback	DWORD_PTR	?
dwReturn	DWORD	?
dwItem	DWORD	?
MCI_GETDEVCAPS_PARMS	ends

PMCI_GETDEVCAPS_PARMS typedef ptr MCI_GETDEVCAPS_PARMS
LPMCI_GETDEVCAPS_PARMS typedef ptr MCI_GETDEVCAPS_PARMS

ifdef _WIN32
MCI_SYSINFO_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpstrReturn	LPSTR	?
dwRetSize	DWORD	?
dwNumber	DWORD	?
wDeviceType	DWORD	?
MCI_SYSINFO_PARMSA	ends

PMCI_SYSINFO_PARMSA typedef ptr MCI_SYSINFO_PARMSA
LPMCI_SYSINFO_PARMSA typedef ptr MCI_SYSINFO_PARMSA

MCI_SYSINFO_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpstrReturn	LPWSTR	?
dwRetSize	DWORD	?
dwNumber	DWORD	?
wDeviceType	DWORD	?
MCI_SYSINFO_PARMSW	ends

PMCI_SYSINFO_PARMSW typedef ptr MCI_SYSINFO_PARMSW
LPMCI_SYSINFO_PARMSW typedef ptr MCI_SYSINFO_PARMSW

ifdef UNICODE
MCI_SYSINFO_PARMS typedef MCI_SYSINFO_PARMSW
PMCI_SYSINFO_PARMS typedef PMCI_SYSINFO_PARMSW
LPMCI_SYSINFO_PARMS typedef LPMCI_SYSINFO_PARMSW
else 
MCI_SYSINFO_PARMS typedef MCI_SYSINFO_PARMSA
PMCI_SYSINFO_PARMS typedef PMCI_SYSINFO_PARMSA
LPMCI_SYSINFO_PARMS typedef LPMCI_SYSINFO_PARMSA
endif 
else 
MCI_SYSINFO_PARMS	struct 
dwCallback	DWORD	?
lpstrReturn	LPSTR	?
dwRetSize	DWORD	?
dwNumber	DWORD	?
wDeviceType	WORD	?
wReserved0	WORD	?
MCI_SYSINFO_PARMS	ends

LPMCI_SYSINFO_PARMS typedef ptr MCI_SYSINFO_PARMS

endif 
MCI_SET_PARMS	struct 
dwCallback	DWORD_PTR	?
dwTimeFormat	DWORD	?
dwAudio	DWORD	?
MCI_SET_PARMS	ends

PMCI_SET_PARMS typedef ptr MCI_SET_PARMS
LPMCI_SET_PARMS typedef ptr MCI_SET_PARMS

MCI_BREAK_PARMS	struct 
dwCallback	DWORD_PTR	?
ifdef _WIN32
nVirtKey	DWORD	?
hwndBreak	HWND	?
else 
nVirtKey	SWORD	?
wReserved0	WORD	?
hwndBreak	HWND	?
wReserved1	WORD	?
endif 
MCI_BREAK_PARMS	ends

PMCI_BREAK_PARMS typedef ptr MCI_BREAK_PARMS
LPMCI_BREAK_PARMS typedef ptr MCI_BREAK_PARMS

ifdef _WIN32
MCI_SAVE_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPSTR	?
MCI_SAVE_PARMSA	ends

PMCI_SAVE_PARMSA typedef ptr MCI_SAVE_PARMSA
LPMCI_SAVE_PARMSA typedef ptr MCI_SAVE_PARMSA

MCI_SAVE_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPWSTR	?
MCI_SAVE_PARMSW	ends

PMCI_SAVE_PARMSW typedef ptr MCI_SAVE_PARMSW
LPMCI_SAVE_PARMSW typedef ptr MCI_SAVE_PARMSW

ifdef UNICODE
MCI_SAVE_PARMS typedef MCI_SAVE_PARMSW
PMCI_SAVE_PARMS typedef PMCI_SAVE_PARMSW
LPMCI_SAVE_PARMS typedef LPMCI_SAVE_PARMSW
else 
MCI_SAVE_PARMS typedef MCI_SAVE_PARMSA
PMCI_SAVE_PARMS typedef PMCI_SAVE_PARMSA
LPMCI_SAVE_PARMS typedef LPMCI_SAVE_PARMSA
endif 
else 
MCI_SAVE_PARMS	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPSTR	?
MCI_SAVE_PARMS	ends

LPMCI_SAVE_PARMS typedef ptr MCI_SAVE_PARMS

endif 
ifdef _WIN32
MCI_LOAD_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPSTR	?
MCI_LOAD_PARMSA	ends

PMCI_LOAD_PARMSA typedef ptr MCI_LOAD_PARMSA
LPMCI_LOAD_PARMSA typedef ptr MCI_LOAD_PARMSA

MCI_LOAD_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPWSTR	?
MCI_LOAD_PARMSW	ends

PMCI_LOAD_PARMSW typedef ptr MCI_LOAD_PARMSW
LPMCI_LOAD_PARMSW typedef ptr MCI_LOAD_PARMSW

ifdef UNICODE
MCI_LOAD_PARMS typedef MCI_LOAD_PARMSW
PMCI_LOAD_PARMS typedef PMCI_LOAD_PARMSW
LPMCI_LOAD_PARMS typedef LPMCI_LOAD_PARMSW
else 
MCI_LOAD_PARMS typedef MCI_LOAD_PARMSA
PMCI_LOAD_PARMS typedef PMCI_LOAD_PARMSA
LPMCI_LOAD_PARMS typedef LPMCI_LOAD_PARMSA
endif 
else 
MCI_LOAD_PARMS	struct 
dwCallback	DWORD	?
lpfilename	LPSTR	?
MCI_LOAD_PARMS	ends

LPMCI_LOAD_PARMS typedef ptr MCI_LOAD_PARMS

endif 
MCI_RECORD_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrom	DWORD	?
dwTo	DWORD	?
MCI_RECORD_PARMS	ends

LPMCI_RECORD_PARMS typedef ptr MCI_RECORD_PARMS

MCI_VD_MODE_PARK	EQU	( MCI_VD_OFFSET + 1 )
MCI_VD_MEDIA_CLV	EQU	( MCI_VD_OFFSET + 2 )
MCI_VD_MEDIA_CAV	EQU	( MCI_VD_OFFSET + 3 )
MCI_VD_MEDIA_OTHER	EQU	( MCI_VD_OFFSET + 4 )
MCI_VD_FORMAT_TRACK	EQU	4001h
MCI_VD_PLAY_REVERSE	EQU	00010000h
MCI_VD_PLAY_FAST	EQU	00020000h
MCI_VD_PLAY_SPEED	EQU	00040000h
MCI_VD_PLAY_SCAN	EQU	00080000h
MCI_VD_PLAY_SLOW	EQU	00100000h
MCI_VD_SEEK_REVERSE	EQU	00010000h
MCI_VD_STATUS_SPEED	EQU	00004002h
MCI_VD_STATUS_FORWARD	EQU	00004003h
MCI_VD_STATUS_MEDIA_TYPE	EQU	00004004h
MCI_VD_STATUS_SIDE	EQU	00004005h
MCI_VD_STATUS_DISC_SIZE	EQU	00004006h
MCI_VD_GETDEVCAPS_CLV	EQU	00010000h
MCI_VD_GETDEVCAPS_CAV	EQU	00020000h
MCI_VD_SPIN_UP	EQU	00010000h
MCI_VD_SPIN_DOWN	EQU	00020000h
MCI_VD_GETDEVCAPS_CAN_REVERSE	EQU	00004002h
MCI_VD_GETDEVCAPS_FAST_RATE	EQU	00004003h
MCI_VD_GETDEVCAPS_SLOW_RATE	EQU	00004004h
MCI_VD_GETDEVCAPS_NORMAL_RATE	EQU	00004005h
MCI_VD_STEP_FRAMES	EQU	00010000h
MCI_VD_STEP_REVERSE	EQU	00020000h
MCI_VD_ESCAPE_STRING	EQU	00000100h
MCI_VD_PLAY_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrom	DWORD	?
dwTo	DWORD	?
dwSpeed	DWORD	?
MCI_VD_PLAY_PARMS	ends

PMCI_VD_PLAY_PARMS typedef ptr MCI_VD_PLAY_PARMS
LPMCI_VD_PLAY_PARMS typedef ptr MCI_VD_PLAY_PARMS

MCI_VD_STEP_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrames	DWORD	?
MCI_VD_STEP_PARMS	ends

PMCI_VD_STEP_PARMS typedef ptr MCI_VD_STEP_PARMS
LPMCI_VD_STEP_PARMS typedef ptr MCI_VD_STEP_PARMS

ifdef _WIN32
MCI_VD_ESCAPE_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpstrCommand	LPSTR	?
MCI_VD_ESCAPE_PARMSA	ends

PMCI_VD_ESCAPE_PARMSA typedef ptr MCI_VD_ESCAPE_PARMSA
LPMCI_VD_ESCAPE_PARMSA typedef ptr MCI_VD_ESCAPE_PARMSA

MCI_VD_ESCAPE_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpstrCommand	LPWSTR	?
MCI_VD_ESCAPE_PARMSW	ends

PMCI_VD_ESCAPE_PARMSW typedef ptr MCI_VD_ESCAPE_PARMSW
LPMCI_VD_ESCAPE_PARMSW typedef ptr MCI_VD_ESCAPE_PARMSW

ifdef UNICODE
MCI_VD_ESCAPE_PARMS typedef MCI_VD_ESCAPE_PARMSW
PMCI_VD_ESCAPE_PARMS typedef PMCI_VD_ESCAPE_PARMSW
LPMCI_VD_ESCAPE_PARMS typedef LPMCI_VD_ESCAPE_PARMSW
else 
MCI_VD_ESCAPE_PARMS typedef MCI_VD_ESCAPE_PARMSA
PMCI_VD_ESCAPE_PARMS typedef PMCI_VD_ESCAPE_PARMSA
LPMCI_VD_ESCAPE_PARMS typedef LPMCI_VD_ESCAPE_PARMSA
endif 
else 
MCI_VD_ESCAPE_PARMS	struct 
dwCallback	DWORD	?
lpstrCommand	LPSTR	?
MCI_VD_ESCAPE_PARMS	ends

LPMCI_VD_ESCAPE_PARMS typedef ptr MCI_VD_ESCAPE_PARMS

endif 
MCI_CDA_STATUS_TYPE_TRACK	EQU	00004001h
MCI_CDA_TRACK_AUDIO	EQU	( MCI_CD_OFFSET + 0 )
MCI_CDA_TRACK_OTHER	EQU	( MCI_CD_OFFSET + 1 )
MCI_WAVE_PCM	EQU	( MCI_WAVE_OFFSET + 0 )
MCI_WAVE_MAPPER	EQU	( MCI_WAVE_OFFSET + 1 )
MCI_WAVE_OPEN_BUFFER	EQU	00010000h
MCI_WAVE_SET_FORMATTAG	EQU	00010000h
MCI_WAVE_SET_CHANNELS	EQU	00020000h
MCI_WAVE_SET_SAMPLESPERSEC	EQU	00040000h
MCI_WAVE_SET_AVGBYTESPERSEC	EQU	00080000h
MCI_WAVE_SET_BLOCKALIGN	EQU	00100000h
MCI_WAVE_SET_BITSPERSAMPLE	EQU	00200000h
MCI_WAVE_INPUT	EQU	00400000h
MCI_WAVE_OUTPUT	EQU	00800000h
MCI_WAVE_STATUS_FORMATTAG	EQU	00004001h
MCI_WAVE_STATUS_CHANNELS	EQU	00004002h
MCI_WAVE_STATUS_SAMPLESPERSEC	EQU	00004003h
MCI_WAVE_STATUS_AVGBYTESPERSEC	EQU	00004004h
MCI_WAVE_STATUS_BLOCKALIGN	EQU	00004005h
MCI_WAVE_STATUS_BITSPERSAMPLE	EQU	00004006h
MCI_WAVE_STATUS_LEVEL	EQU	00004007h
MCI_WAVE_SET_ANYINPUT	EQU	04000000h
MCI_WAVE_SET_ANYOUTPUT	EQU	08000000h
MCI_WAVE_GETDEVCAPS_INPUTS	EQU	00004001h
MCI_WAVE_GETDEVCAPS_OUTPUTS	EQU	00004002h
ifdef _WIN32
MCI_WAVE_OPEN_PARMSA	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwBufferSeconds	DWORD	?
MCI_WAVE_OPEN_PARMSA	ends

PMCI_WAVE_OPEN_PARMSA typedef ptr MCI_WAVE_OPEN_PARMSA
LPMCI_WAVE_OPEN_PARMSA typedef ptr MCI_WAVE_OPEN_PARMSA

MCI_WAVE_OPEN_PARMSW	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPWSTR	?
lpstrElementName	LPWSTR	?
lpstrAlias	LPWSTR	?
dwBufferSeconds	DWORD	?
MCI_WAVE_OPEN_PARMSW	ends

PMCI_WAVE_OPEN_PARMSW typedef ptr MCI_WAVE_OPEN_PARMSW
LPMCI_WAVE_OPEN_PARMSW typedef ptr MCI_WAVE_OPEN_PARMSW

ifdef UNICODE
MCI_WAVE_OPEN_PARMS typedef MCI_WAVE_OPEN_PARMSW
PMCI_WAVE_OPEN_PARMS typedef PMCI_WAVE_OPEN_PARMSW
LPMCI_WAVE_OPEN_PARMS typedef LPMCI_WAVE_OPEN_PARMSW
else 
MCI_WAVE_OPEN_PARMS typedef MCI_WAVE_OPEN_PARMSA
PMCI_WAVE_OPEN_PARMS typedef PMCI_WAVE_OPEN_PARMSA
LPMCI_WAVE_OPEN_PARMS typedef LPMCI_WAVE_OPEN_PARMSA
endif 
else 
MCI_WAVE_OPEN_PARMS	struct 
dwCallback	DWORD	?
wDeviceID	MCIDEVICEID	?
wReserved0	WORD	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwBufferSeconds	DWORD	?
MCI_WAVE_OPEN_PARMS	ends

LPMCI_WAVE_OPEN_PARMS typedef ptr MCI_WAVE_OPEN_PARMS

endif 
MCI_WAVE_DELETE_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrom	DWORD	?
dwTo	DWORD	?
MCI_WAVE_DELETE_PARMS	ends

PMCI_WAVE_DELETE_PARMS typedef ptr MCI_WAVE_DELETE_PARMS
LPMCI_WAVE_DELETE_PARMS typedef ptr MCI_WAVE_DELETE_PARMS

MCI_WAVE_SET_PARMS	struct 
dwCallback	DWORD_PTR	?
dwTimeFormat	DWORD	?
dwAudio	DWORD	?
ifdef _WIN32
wInput	DWORD	?
wOutput	DWORD	?
else 
wInput	WORD	?
wReserved0	WORD	?
wOutput	WORD	?
wReserved1	WORD	?
endif 
wFormatTag	WORD	?
wReserved2	WORD	?
nChannels	WORD	?
wReserved3	WORD	?
nSamplesPerSec	DWORD	?
nAvgBytesPerSec	DWORD	?
nBlockAlign	WORD	?
wReserved4	WORD	?
wBitsPerSample	WORD	?
wReserved5	WORD	?
MCI_WAVE_SET_PARMS	ends

PMCI_WAVE_SET_PARMS typedef ptr MCI_WAVE_SET_PARMS
LPMCI_WAVE_SET_PARMS typedef ptr MCI_WAVE_SET_PARMS

MCI_SEQ_DIV_PPQN	EQU	( 0 + MCI_SEQ_OFFSET )
MCI_SEQ_DIV_SMPTE_24	EQU	( 1 + MCI_SEQ_OFFSET )
MCI_SEQ_DIV_SMPTE_25	EQU	( 2 + MCI_SEQ_OFFSET )
MCI_SEQ_DIV_SMPTE_30DROP	EQU	( 3 + MCI_SEQ_OFFSET )
MCI_SEQ_DIV_SMPTE_30	EQU	( 4 + MCI_SEQ_OFFSET )
MCI_SEQ_FORMAT_SONGPTR	EQU	4001h
MCI_SEQ_FILE	EQU	4002h
MCI_SEQ_MIDI	EQU	4003h
MCI_SEQ_SMPTE	EQU	4004h
MCI_SEQ_NONE	EQU	65533
MCI_SEQ_MAPPER	EQU	65535
MCI_SEQ_STATUS_TEMPO	EQU	00004002h
MCI_SEQ_STATUS_PORT	EQU	00004003h
MCI_SEQ_STATUS_SLAVE	EQU	00004007h
MCI_SEQ_STATUS_MASTER	EQU	00004008h
MCI_SEQ_STATUS_OFFSET	EQU	00004009h
MCI_SEQ_STATUS_DIVTYPE	EQU	0000400Ah
MCI_SEQ_STATUS_NAME	EQU	0000400Bh
MCI_SEQ_STATUS_COPYRIGHT	EQU	0000400Ch
MCI_SEQ_SET_TEMPO	EQU	00010000h
MCI_SEQ_SET_PORT	EQU	00020000h
MCI_SEQ_SET_SLAVE	EQU	00040000h
MCI_SEQ_SET_MASTER	EQU	00080000h
MCI_SEQ_SET_OFFSET	EQU	01000000h
MCI_SEQ_SET_PARMS	struct 
dwCallback	DWORD_PTR	?
dwTimeFormat	DWORD	?
dwAudio	DWORD	?
dwTempo	DWORD	?
dwPort	DWORD	?
dwSlave	DWORD	?
dwMaster	DWORD	?
dwOffset	DWORD	?
MCI_SEQ_SET_PARMS	ends

PMCI_SEQ_SET_PARMS typedef ptr MCI_SEQ_SET_PARMS
LPMCI_SEQ_SET_PARMS typedef ptr MCI_SEQ_SET_PARMS

MCI_ANIM_OPEN_WS	EQU	00010000h
MCI_ANIM_OPEN_PARENT	EQU	00020000h
MCI_ANIM_OPEN_NOSTATIC	EQU	00040000h
MCI_ANIM_PLAY_SPEED	EQU	00010000h
MCI_ANIM_PLAY_REVERSE	EQU	00020000h
MCI_ANIM_PLAY_FAST	EQU	00040000h
MCI_ANIM_PLAY_SLOW	EQU	00080000h
MCI_ANIM_PLAY_SCAN	EQU	00100000h
MCI_ANIM_STEP_REVERSE	EQU	00010000h
MCI_ANIM_STEP_FRAMES	EQU	00020000h
MCI_ANIM_STATUS_SPEED	EQU	00004001h
MCI_ANIM_STATUS_FORWARD	EQU	00004002h
MCI_ANIM_STATUS_HWND	EQU	00004003h
MCI_ANIM_STATUS_HPAL	EQU	00004004h
MCI_ANIM_STATUS_STRETCH	EQU	00004005h
MCI_ANIM_INFO_TEXT	EQU	00010000h
MCI_ANIM_GETDEVCAPS_CAN_REVERSE	EQU	00004001h
MCI_ANIM_GETDEVCAPS_FAST_RATE	EQU	00004002h
MCI_ANIM_GETDEVCAPS_SLOW_RATE	EQU	00004003h
MCI_ANIM_GETDEVCAPS_NORMAL_RATE	EQU	00004004h
MCI_ANIM_GETDEVCAPS_PALETTES	EQU	00004006h
MCI_ANIM_GETDEVCAPS_CAN_STRETCH	EQU	00004007h
MCI_ANIM_GETDEVCAPS_MAX_WINDOWS	EQU	00004008h
MCI_ANIM_REALIZE_NORM	EQU	00010000h
MCI_ANIM_REALIZE_BKGD	EQU	00020000h
MCI_ANIM_WINDOW_HWND	EQU	00010000h
MCI_ANIM_WINDOW_STATE	EQU	00040000h
MCI_ANIM_WINDOW_TEXT	EQU	00080000h
MCI_ANIM_WINDOW_ENABLE_STRETCH	EQU	00100000h
MCI_ANIM_WINDOW_DISABLE_STRETCH	EQU	00200000h
MCI_ANIM_WINDOW_DEFAULT	EQU	00000000h
MCI_ANIM_RECT	EQU	00010000h
MCI_ANIM_PUT_SOURCE	EQU	00020000h
MCI_ANIM_PUT_DESTINATION	EQU	00040000h
MCI_ANIM_WHERE_SOURCE	EQU	00020000h
MCI_ANIM_WHERE_DESTINATION	EQU	00040000h
MCI_ANIM_UPDATE_HDC	EQU	00020000h
ifdef _WIN32
MCI_ANIM_OPEN_PARMSA	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
MCI_ANIM_OPEN_PARMSA	ends

PMCI_ANIM_OPEN_PARMSA typedef ptr MCI_ANIM_OPEN_PARMSA
LPMCI_ANIM_OPEN_PARMSA typedef ptr MCI_ANIM_OPEN_PARMSA

MCI_ANIM_OPEN_PARMSW	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPWSTR	?
lpstrElementName	LPWSTR	?
lpstrAlias	LPWSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
MCI_ANIM_OPEN_PARMSW	ends

PMCI_ANIM_OPEN_PARMSW typedef ptr MCI_ANIM_OPEN_PARMSW
LPMCI_ANIM_OPEN_PARMSW typedef ptr MCI_ANIM_OPEN_PARMSW

ifdef UNICODE
MCI_ANIM_OPEN_PARMS typedef MCI_ANIM_OPEN_PARMSW
PMCI_ANIM_OPEN_PARMS typedef PMCI_ANIM_OPEN_PARMSW
LPMCI_ANIM_OPEN_PARMS typedef LPMCI_ANIM_OPEN_PARMSW
else 
MCI_ANIM_OPEN_PARMS typedef MCI_ANIM_OPEN_PARMSA
PMCI_ANIM_OPEN_PARMS typedef PMCI_ANIM_OPEN_PARMSA
LPMCI_ANIM_OPEN_PARMS typedef LPMCI_ANIM_OPEN_PARMSA
endif 
else 
MCI_ANIM_OPEN_PARMS	struct 
dwCallback	DWORD	?
wDeviceID	MCIDEVICEID	?
wReserved0	WORD	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
wReserved1	WORD	?
MCI_ANIM_OPEN_PARMS	ends

LPMCI_ANIM_OPEN_PARMS typedef ptr MCI_ANIM_OPEN_PARMS

endif 
MCI_ANIM_PLAY_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrom	DWORD	?
dwTo	DWORD	?
dwSpeed	DWORD	?
MCI_ANIM_PLAY_PARMS	ends

PMCI_ANIM_PLAY_PARMS typedef ptr MCI_ANIM_PLAY_PARMS
LPMCI_ANIM_PLAY_PARMS typedef ptr MCI_ANIM_PLAY_PARMS

MCI_ANIM_STEP_PARMS	struct 
dwCallback	DWORD_PTR	?
dwFrames	DWORD	?
MCI_ANIM_STEP_PARMS	ends

PMCI_ANIM_STEP_PARMS typedef ptr MCI_ANIM_STEP_PARMS
LPMCI_ANIM_STEP_PARMS typedef ptr MCI_ANIM_STEP_PARMS

ifdef _WIN32
MCI_ANIM_WINDOW_PARMSA	struct 
dwCallback	DWORD_PTR	?
hWnd	HWND	?
nCmdShow	DWORD	?
lpstrText	LPSTR	?
MCI_ANIM_WINDOW_PARMSA	ends

PMCI_ANIM_WINDOW_PARMSA typedef ptr MCI_ANIM_WINDOW_PARMSA
LPMCI_ANIM_WINDOW_PARMSA typedef ptr MCI_ANIM_WINDOW_PARMSA

MCI_ANIM_WINDOW_PARMSW	struct 
dwCallback	DWORD_PTR	?
hWnd	HWND	?
nCmdShow	DWORD	?
lpstrText	LPWSTR	?
MCI_ANIM_WINDOW_PARMSW	ends

PMCI_ANIM_WINDOW_PARMSW typedef ptr MCI_ANIM_WINDOW_PARMSW
LPMCI_ANIM_WINDOW_PARMSW typedef ptr MCI_ANIM_WINDOW_PARMSW

ifdef UNICODE
MCI_ANIM_WINDOW_PARMS typedef MCI_ANIM_WINDOW_PARMSW
PMCI_ANIM_WINDOW_PARMS typedef PMCI_ANIM_WINDOW_PARMSW
LPMCI_ANIM_WINDOW_PARMS typedef LPMCI_ANIM_WINDOW_PARMSW
else 
MCI_ANIM_WINDOW_PARMS typedef MCI_ANIM_WINDOW_PARMSA
PMCI_ANIM_WINDOW_PARMS typedef PMCI_ANIM_WINDOW_PARMSA
LPMCI_ANIM_WINDOW_PARMS typedef LPMCI_ANIM_WINDOW_PARMSA
endif 
else 
MCI_ANIM_WINDOW_PARMS	struct 
dwCallback	DWORD	?
hWnd	HWND	?
wReserved1	WORD	?
nCmdShow	WORD	?
wReserved2	WORD	?
lpstrText	LPSTR	?
MCI_ANIM_WINDOW_PARMS	ends

LPMCI_ANIM_WINDOW_PARMS typedef ptr MCI_ANIM_WINDOW_PARMS

endif 
MCI_ANIM_RECT_PARMS	struct 
dwCallback	DWORD_PTR	?
ifdef MCI_USE_OFFEXT
ptOffset	POINT	<>
ptExtent	POINT	<>
else 
rc	RECT	<>
endif 
MCI_ANIM_RECT_PARMS	ends

PMCI_ANIM_RECT_PARMS typedef ptr MCI_ANIM_RECT_PARMS
LPMCI_ANIM_RECT_PARMS typedef ptr MCI_ANIM_RECT_PARMS
MCI_ANIM_UPDATE_PARMS	struct 
dwCallback	DWORD_PTR	?
rc	RECT	<>
hDC	HDC	?
MCI_ANIM_UPDATE_PARMS	ends

PMCI_ANIM_UPDATE_PARMS typedef ptr MCI_ANIM_UPDATE_PARMS
LPMCI_ANIM_UPDATE_PARMS typedef ptr MCI_ANIM_UPDATE_PARMS

MCI_OVLY_OPEN_WS	EQU	00010000h
MCI_OVLY_OPEN_PARENT	EQU	00020000h
MCI_OVLY_STATUS_HWND	EQU	00004001h
MCI_OVLY_STATUS_STRETCH	EQU	00004002h
MCI_OVLY_INFO_TEXT	EQU	00010000h
MCI_OVLY_GETDEVCAPS_CAN_STRETCH	EQU	00004001h
MCI_OVLY_GETDEVCAPS_CAN_FREEZE	EQU	00004002h
MCI_OVLY_GETDEVCAPS_MAX_WINDOWS	EQU	00004003h
MCI_OVLY_WINDOW_HWND	EQU	00010000h
MCI_OVLY_WINDOW_STATE	EQU	00040000h
MCI_OVLY_WINDOW_TEXT	EQU	00080000h
MCI_OVLY_WINDOW_ENABLE_STRETCH	EQU	00100000h
MCI_OVLY_WINDOW_DISABLE_STRETCH	EQU	00200000h
MCI_OVLY_WINDOW_DEFAULT	EQU	00000000h
MCI_OVLY_RECT	EQU	00010000h
MCI_OVLY_PUT_SOURCE	EQU	00020000h
MCI_OVLY_PUT_DESTINATION	EQU	00040000h
MCI_OVLY_PUT_FRAME	EQU	00080000h
MCI_OVLY_PUT_VIDEO	EQU	00100000h
MCI_OVLY_WHERE_SOURCE	EQU	00020000h
MCI_OVLY_WHERE_DESTINATION	EQU	00040000h
MCI_OVLY_WHERE_FRAME	EQU	00080000h
MCI_OVLY_WHERE_VIDEO	EQU	00100000h
ifdef _WIN32
MCI_OVLY_OPEN_PARMSA	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
MCI_OVLY_OPEN_PARMSA	ends

PMCI_OVLY_OPEN_PARMSA typedef ptr MCI_OVLY_OPEN_PARMSA
LPMCI_OVLY_OPEN_PARMSA typedef ptr MCI_OVLY_OPEN_PARMSA

MCI_OVLY_OPEN_PARMSW	struct 
dwCallback	DWORD_PTR	?
wDeviceID	MCIDEVICEID	?
lpstrDeviceType	LPWSTR	?
lpstrElementName	LPWSTR	?
lpstrAlias	LPWSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
MCI_OVLY_OPEN_PARMSW	ends

PMCI_OVLY_OPEN_PARMSW typedef ptr MCI_OVLY_OPEN_PARMSW
LPMCI_OVLY_OPEN_PARMSW typedef ptr MCI_OVLY_OPEN_PARMSW

ifdef UNICODE
MCI_OVLY_OPEN_PARMS typedef MCI_OVLY_OPEN_PARMSW
PMCI_OVLY_OPEN_PARMS typedef PMCI_OVLY_OPEN_PARMSW
LPMCI_OVLY_OPEN_PARMS typedef LPMCI_OVLY_OPEN_PARMSW
else 
MCI_OVLY_OPEN_PARMS typedef MCI_OVLY_OPEN_PARMSA
PMCI_OVLY_OPEN_PARMS typedef PMCI_OVLY_OPEN_PARMSA
LPMCI_OVLY_OPEN_PARMS typedef LPMCI_OVLY_OPEN_PARMSA
endif 
else 
MCI_OVLY_OPEN_PARMS	struct 
dwCallback	DWORD	?
wDeviceID	MCIDEVICEID	?
wReserved0	WORD	?
lpstrDeviceType	LPSTR	?
lpstrElementName	LPSTR	?
lpstrAlias	LPSTR	?
dwStyle	DWORD	?
hWndParent	HWND	?
wReserved1	WORD	?
MCI_OVLY_OPEN_PARMS	ends

LPMCI_OVLY_OPEN_PARMS typedef ptr MCI_OVLY_OPEN_PARMS

endif 
ifdef _WIN32
MCI_OVLY_WINDOW_PARMSA	struct 
dwCallback	DWORD_PTR	?
hWnd	HWND	?
nCmdShow	DWORD	?
lpstrText	LPSTR	?
MCI_OVLY_WINDOW_PARMSA	ends

PMCI_OVLY_WINDOW_PARMSA typedef ptr MCI_OVLY_WINDOW_PARMSA
LPMCI_OVLY_WINDOW_PARMSA typedef ptr MCI_OVLY_WINDOW_PARMSA

MCI_OVLY_WINDOW_PARMSW	struct 
dwCallback	DWORD_PTR	?
hWnd	HWND	?
nCmdShow	DWORD	?
lpstrText	LPWSTR	?
MCI_OVLY_WINDOW_PARMSW	ends

PMCI_OVLY_WINDOW_PARMSW typedef ptr MCI_OVLY_WINDOW_PARMSW
LPMCI_OVLY_WINDOW_PARMSW typedef ptr MCI_OVLY_WINDOW_PARMSW

ifdef UNICODE
MCI_OVLY_WINDOW_PARMS typedef MCI_OVLY_WINDOW_PARMSW
PMCI_OVLY_WINDOW_PARMS typedef PMCI_OVLY_WINDOW_PARMSW
LPMCI_OVLY_WINDOW_PARMS typedef LPMCI_OVLY_WINDOW_PARMSW
else 
MCI_OVLY_WINDOW_PARMS typedef MCI_OVLY_WINDOW_PARMSA
PMCI_OVLY_WINDOW_PARMS typedef PMCI_OVLY_WINDOW_PARMSA
LPMCI_OVLY_WINDOW_PARMS typedef LPMCI_OVLY_WINDOW_PARMSA
endif 
else 
MCI_OVLY_WINDOW_PARMS	struct 
dwCallback	DWORD	?
hWnd	HWND	?
wReserved1	WORD	?
nCmdShow	DWORD	?
wReserved2	WORD	?
lpstrText	LPSTR	?
MCI_OVLY_WINDOW_PARMS	ends

LPMCI_OVLY_WINDOW_PARMS typedef ptr MCI_OVLY_WINDOW_PARMS

endif 
MCI_OVLY_RECT_PARMS	struct 
dwCallback	DWORD_PTR	?
ifdef MCI_USE_OFFEXT
ptOffset	POINT	<>
ptExtent	POINT	<>
else 
rc	RECT	<>
endif 
MCI_OVLY_RECT_PARMS	ends

PMCI_OVLY_RECT_PARMS typedef ptr MCI_OVLY_RECT_PARMS
LPMCI_OVLY_RECT_PARMS typedef ptr MCI_OVLY_RECT_PARMS

ifdef _WIN32
MCI_OVLY_SAVE_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPSTR	?
rc	RECT	<>
MCI_OVLY_SAVE_PARMSA	ends

PMCI_OVLY_SAVE_PARMSA typedef ptr MCI_OVLY_SAVE_PARMSA
LPMCI_OVLY_SAVE_PARMSA typedef ptr MCI_OVLY_SAVE_PARMSA

MCI_OVLY_SAVE_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPWSTR	?
rc	RECT	<>
MCI_OVLY_SAVE_PARMSW	ends

PMCI_OVLY_SAVE_PARMSW typedef ptr MCI_OVLY_SAVE_PARMSW
LPMCI_OVLY_SAVE_PARMSW typedef ptr MCI_OVLY_SAVE_PARMSW

ifdef UNICODE
MCI_OVLY_SAVE_PARMS typedef MCI_OVLY_SAVE_PARMSW
PMCI_OVLY_SAVE_PARMS typedef PMCI_OVLY_SAVE_PARMSW
LPMCI_OVLY_SAVE_PARMS typedef LPMCI_OVLY_SAVE_PARMSW
else 
MCI_OVLY_SAVE_PARMS typedef MCI_OVLY_SAVE_PARMSA
PMCI_OVLY_SAVE_PARMS typedef PMCI_OVLY_SAVE_PARMSA
LPMCI_OVLY_SAVE_PARMS typedef LPMCI_OVLY_SAVE_PARMSA
endif 
else 
MCI_OVLY_SAVE_PARMS	struct 
dwCallback	DWORD	?
lpfilename	LPSTR	?
rc	RECT	<>
MCI_OVLY_SAVE_PARMS	ends

LPMCI_OVLY_SAVE_PARMS typedef ptr MCI_OVLY_SAVE_PARMS

endif 
ifdef _WIN32
MCI_OVLY_LOAD_PARMSA	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPSTR	?
rc	RECT	<>
MCI_OVLY_LOAD_PARMSA	ends

PMCI_OVLY_LOAD_PARMSA typedef ptr MCI_OVLY_LOAD_PARMSA
LPMCI_OVLY_LOAD_PARMSA typedef ptr MCI_OVLY_LOAD_PARMSA

MCI_OVLY_LOAD_PARMSW	struct 
dwCallback	DWORD_PTR	?
lpfilename	LPWSTR	?
rc	RECT	<>
MCI_OVLY_LOAD_PARMSW	ends

PMCI_OVLY_LOAD_PARMSW typedef ptr MCI_OVLY_LOAD_PARMSW
LPMCI_OVLY_LOAD_PARMSW typedef ptr MCI_OVLY_LOAD_PARMSW

ifdef UNICODE
MCI_OVLY_LOAD_PARMS typedef MCI_OVLY_LOAD_PARMSW
PMCI_OVLY_LOAD_PARMS typedef PMCI_OVLY_LOAD_PARMSW
LPMCI_OVLY_LOAD_PARMS typedef LPMCI_OVLY_LOAD_PARMSW
else 
MCI_OVLY_LOAD_PARMS typedef MCI_OVLY_LOAD_PARMSA
PMCI_OVLY_LOAD_PARMS typedef PMCI_OVLY_LOAD_PARMSA
LPMCI_OVLY_LOAD_PARMS typedef LPMCI_OVLY_LOAD_PARMSA
endif 
else 
MCI_OVLY_LOAD_PARMS	struct 
dwCallback	DWORD	?
lpfilename	LPSTR	?
rc	RECT	<>
MCI_OVLY_LOAD_PARMS	ends

LPMCI_OVLY_LOAD_PARMS typedef ptr MCI_OVLY_LOAD_PARMS

endif 
endif 
ifndef NEWTRANSPARENT
NEWTRANSPARENT	EQU	3
QUERYROPSUPPORT	EQU	40
endif 
SELECTDIB	EQU	41
DIBINDEX macro n
	exitm <MAKELONG ( ( n ) , 10FFh ) >
	endm
ifndef SC_SCREENSAVE
SC_SCREENSAVE	EQU	0F140h
endif 
ifdef __cplusplus
;}
endif 
ifdef _WIN32
	include poppack.inc
else 
ifndef RC_INVOKED
;#pragma pack ( ) 
endif 
endif 
endif 

;--- errors: 0
;--- end of file ---
